INSERT OVERWRITE TABLE _tableName_ PARTITION (_partitionColumn_= _partitionValue_)
SELECT [other Things], CASE WHEN id=206 THEN 'florida' ELSE location END AS location, [other Other Things]
FROM _tableName_ WHERE [_whereClause_];
複数のパーティションをコンマで区切ってリストすることができます。... PARTITION (_partitionColumn_= _partitionValue1_, _partitionColumn_= _partitionValue2_, ...)
。複数のパーティションを一度に1つずつ使用したことはないので、すべてのパーティションを一度に実行する前に、test /devenvで結果を確認します。OVERWRITE
それぞれを単一のパーティションに制限する理由は他にもありました。
このページhttps://cwiki.apache.org/confluence/display/Hive/LanguageManual+DMLには、もう少し詳しく説明されています。
このサイトhttps://cwiki.apache.org/confluence/display/Hive/LanguageManualは、一般的に、HiveSQLを使用する際の親友です。
一部のデータを移行するためにこれと同じものを開発しましたが、機能しました。大規模なデータセットに対しては試していませんが、数GBしかなく、完全に機能しています。
注-これにより、パーティションが上書きされます。以前のファイルをさようならにします。バックアップと復元のスクリプト/手順を作成します。[other Things]
およびは、テーブルの[other Other Things]
残りの列です。それらは正しい順序である必要があります。これは非常に重要です。さもないと、データが破損します。
お役に立てれば。:)