2017-03-21 6 views
0

ハイブテーブルの特定のレコードを上書きする方法は?
例:
私は100レコードを持つテーブルt1を持っています。今私はこれらの100レコードのうち30レコードだけを上書きしなければなりません。ハイブテーブルのレコードを更新する

どうすればできますか?

答えて

0

Hiveは、Hive-0.14のACIDプロパティをサポートしています。 Hiveトランザクションを使用すると、既存のレコードを更新または削除できます。

更新および削除操作を実行する際に従うべきルールはほとんどありません。詳細と実装については、Hiveトランザクションでto this blogを参照することができます。

+0

基本的に、私は2つのテーブルをマージする必要があります。 2つのテーブルが一致するIDを持つ場合、第1テーブルのレコードは第2テーブルのレコードによって上書きされなければなりません。第2テーブルのレコードは第1テーブルに挿入されます。 – Parameshwar

0

私の評判は直接あなたのコメントにお答えするには低すぎるが、ここでそれを達成する方法があります:

INSERT OVERWRITE TABLE table_a 
SELECT * FROM table_a a WHERE a.id NOT IN (SELECT id FROM table_b) 
UNION ALL 
SELECT * FROM table_b; 
+0

この場合、 'NOT IN'は' NOT EXISTS'と同じように動作しますか? [documentation](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-HingTablesfromqueries)は、特にNOT EXISTSを使用するように指示します。 – Andrew

関連する問題