Hive での効率的な増分データ更新
Hive は、メイン テーブル内でデータを増分更新するためのさまざまなアプローチを提供します。最も効果的な方法を見てみましょう。
完全外部結合
ACID モードでのマージ操作が利用できない場合は、完全外部結合を利用して、対象となるエントリを見つけることができます。更新:
insert overwrite target_data [partition() if applicable] SELECT case when i.PK is not null then i.PK else t.PK end as PK, case when i.PK is not null then i.COL1 else t.COL1 end as COL1, ... case when i.PK is not null then i.COL_n else t.COL_n end as COL_n FROM target_data t --restrict partitions if applicable FULL JOIN increment_data i on (t.PK=i.PK);
行を含むすべての結合Number
または、UNION ALL と row_number() を使用して完全結合を回避できます。
INSERT INTO target_data (pk, col1, col2, ...) SELECT pk, col1, col2, ... FROM increment_data WHERE pk NOT IN (SELECT pk FROM target_data) UNION ALL SELECT pk, col1, col2, ... FROM target_data;
このソリューションは、すべての列を新しいデータ。
パーティション最適化
パフォーマンスを向上させるために、WHERE Partition_col IN (increment_data から個別の Partition_col を選択) 句を使用して、上書きされる target_data テーブル内のパーティションを制限できます。さらに、パーティション リストを WHERE 句のパラメータとして渡すと、操作をさらに高速化できます。
以上がHive で増分データ更新を効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。