データを変更するたびにテーブル統計を計算します。
ANALYZE TABLE hive_table PARTITION(partitioned_col) COMPUTE STATISTICS FOR COLUMNS;
CBOと統計の自動収集を有効にする:
set hive.cbo.enable=true;
set hive.stats.autogather=true;
は、統計を使用してCBOを有効にするために、これらの設定を使用します。
set hive.compute.query.using.stats=true;
set hive.stats.fetch.partition.stats=true;
set hive.stats.fetch.column.stats=true;
何も助けなかった場合、私は見つけるために、このアプローチを適用することをお勧めしたいです最後のパーティション高速: テーブルの場所からシェルスクリプトを使用して最大パーティションキーを解析します。 以下のコマンドは、すべてのテーブルフォルダパス、ソート、最新のソート、最後のサブフォルダ名、パースパーティションフォルダ名、抽出値を出力します。
last_partition=$(hadoop fs -ls $TABLE_DIR/* | awk '{ print $8 }' | sort -r | head -n1 | cut -d/-f [number of partition subfolder in the path here] | cut -d = -f 2
その後
-hiveconf last_partition=$last_partition
としてスクリプトに渡す
$last_partition
変数を使用します