2017-01-18 7 views
0

カラムc1、c2、c3、c4のハイブ(T1)で新しいテーブルを作成しました。私は他の既存のテーブル(T2、T3)からのクエリによってこのテーブルにデータを移入したいと思います。複数の既存のテーブルから新しいハイブテーブルの列を取り込む方法は?

たとえば、T2 &で実行されるクエリからc1とc2が来て、他の列c3とc4はT3で実行されたクエリに由来します。 これはハイブで可能ですか?私は莫大な研究をしましたが、まだこの解決策を見つけることができません

答えて

3

この作品のような何かはありませんか?

create table T1 as 
select t2.c1, t2.c2, t3.c3, t3.c4 from (some query against T2) t2 JOIN (some query against T3) t3 

明らかにJOINは必要なもので置き換えてください。私は、T2とT3の間でいくつかの結合が可能であると仮定します。そうしないと、T1の列を互いに並べて配置しません。

0

hive documentationによると、あなたはデータを挿入するには、次の構文を使用することができます。

値は、テーブルのすべての列のために提供する必要があります。

INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement; 

があることに注意してください。ユーザーが一部の列にのみ値を挿入できる標準のSQL構文は、まだサポートされていません。標準SQLを模倣するために、ユーザーが値を割り当てることを望まない列に対してヌルを与えることができます。

したがって、私は既存の2つのテーブルの間にJOINを作成し、必要な値だけをターゲットテーブルに挿入してSELECTで挿入します。あるいは、一時テーブルを作成することで、データをより詳細に管理することができます。公式文書に記載されているように、NULLを使ってこの問題を処理することを覚えておいてください。これは単なるアイデアです。私はあなたが必要とするものを達成するための他の方法があると思いますが、それを始めるには良い場所になるかもしれません。

関連する問題