まず、ハイブパーティションを挿入する方法を列挙します
。1:ファイルから
ハイブロードデータの指定されたパーティションにデータをインポートします。ローカルインパス 'filepath'をテーブルtableNamepartition(partitionColumn = '');
2:最初にパーティションを作成し、次にファイルを他のパーティションに渡します。対応するhdfsパスに、対応する形式(列区切り文字は「\ t」、「\ 001」など)でデータを配置します。
パーティションを手動で作成する
altertable tableName add partition(partitionColume = '');
削除パーティション
alter table tableName drop partition(partitionColume = '');
3:プロジェクトで一般的な方法であるパーティションを動的に修復します。
多くの場合、mr、spark、またはflinkは、処理後に対応するパーティションディレクトリにデータを配置しますが、パーティションテーブルのパーティションメタデータはメタストア(通常はmysql)に格納されるため、このようなデータパーティションテーブルは認識されません。方法2を使用して、パーティションを1つずつ追加できますが、パーティションが多すぎる場合は面倒な
ので、次のコマンドを直接使用できます。msckrepair table tableName
4:動的パーティション認識挿入、より一般的に使用される
最初に動的パーティション関連パラメーターを
設定するsethive.exec.dynamic。パーティション= true;
set hive.exec.dynamic.partition.mode = nonstrict;
set hive.exec.max.dynamic.partitions.pernode = 10000;
多くの場合、あるテーブルからデータを照会し、それを別のテーブルに挿入して、特定のフィールドに従って動的にパーティション化します。
insert overwrite table tb_test partition(partitionColumn)
select col_a,
col_b,
.....
col_last,
col_date --这个字段不是实际插入到表中的哦,只是用来标识根据此字段的值来插入到不同的分区中
from tb_test0
この方法の効果は次のとおりです。
挿入前:挿入
後:
完全な挿入、最後の方法は非常に一般的ですが、パラメーターを設定することを忘れないでください