16 列 (user_id、date、other_attributes ......) を持つテキスト ファイルがあり、全体ファイルのサイズは 200GB で、行数は 1800 百万以上です。これらのデータを読み取るために、外部テーブル (ex_raw_data) を作成しました。200 以上の派生変数を生成する集計スクリプトがあります。外部テーブル (ex_raw_data) でクエリを実行すると、ファイルが単純なテキスト ファイルであり、行数と計算変数が膨大であるため、計算に時間がかかります。現在、データを ORC 形式で格納する新しいハイブ テーブルを作成することを計画していますが、問題は、テーブルの作成中に適切なバケット数を決定する方法です。以下は、私のクラスター構成 (AWS 上) と ORC テーブル構造です。
Namenode: 32 cores,60 GB RAM, 180GB SSD
4 Data Nodes: 8 cores (on each data node), 30G RAM (on each data node),
Total HDFS size 1.5 TB SSD
create table raw_data_orc
(
user_id string,
date int,
attrib1 string,
attrib1 string,
attrib1 int,
.
.
.
)
CLUSTERED BY(user_id) INTO 32 BUCKETS
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS ORC tblproperties ("orc.compress"="ZLIB");
INSERT OVERWRITE TABLE raw_data_orc select * from ex_raw_data;
ORC テーブルのバケット数を決定するためのベスト プラクティスは何ですか (上記のクラスター構成に従って)?? あなたの助けに感謝!