こんにちは、私はハイブに非常に慣れていません.hadoopでバケットの概念を実行しましたが、以下の行を理解できませんでした.誰かがこれについて私を助けることができますか?
SELECT avg(viewTime)
FROM page_view TABLESAMPLE(BUCKET 1 OUT OF 32);
TABLESAMPLE の一般的な構文は、TABLESAMPLE(BUCKET x OUT OF y) です。
クエリのサンプル サイズは約 1/y です。さらに、y は、テーブルの作成時にテーブルに指定されたバケット数の倍数または因数である必要があります。たとえば、y を 16 に変更すると、クエリは次のようになります。
SELECT avg(viewTime)
FROM page_view TABLESAMPLE(BUCKET 1 OUT OF 16);
この場合、サンプル サイズには 16 ユーザーごとに約 1 人が含まれます (バケット列はユーザー ID であるため)。テーブルにはまだ 32 個のバケットがありますが、Hive はバケット 1 と 17 を一緒に処理することにより、このクエリを満たすことを試みます。一方、y が 64 に指定されている場合、Hive は 1 つのバケット内のデータの半分に対してクエリを実行します。x の値は、使用するバケットを選択するためにのみ使用されます。真にランダムなサンプリングでは、その値は重要ではありません。