2017-08-27 7 views
-2

私は比較的新しいHiveです。キーによって互いに接続されていない2つのテーブルをマージする方法を探る。だから、私はクエリで 'ON'条件を使用していません。HIVE JOIN列数が異なる2つのテーブルの間違った列の値

以下のtable_1ある:

COL1 
hello 

以下であるtable_2:

COL2 
world 
excellent 

期待される結果:

hello world 
NULL excellent 

実績:

hello world 
hello excellent 

私のクエリは:

select col_one, 
    col_two 
from (
    select COL1 as col_one 
    from table_1 
    ) as c1 
join (
    select COL2 as col_two 
    from table_2 
    ) as c2; 

私はよく分からないのtable_1

+0

「1 x 2 = 2 rows」というクロスジョインをしているからです。参加の基準は何ですか?あるいは「合併する」と言いましたか?あなたのデータを見ると、何も見えません。 – GurV

+0

こんにちは@ GurwinderSingh:これらのテーブルはキーに関連していません。だから私の場合、私は何の条件も与えていない。 –

+0

あなたはそのように参加することはできません。ご注文はお忘れですか?おそらく2つの列の昇順で行番号に結合? – GurV

答えて

0

には行-2が存在しない場合に「こんにちは」結果で来るかからわからないんだけど、どのようにクエリの作品をon句なし。しかし、あなたはあなたが望むことを次のようなものにすることができます:

select c1.col_one, c2.col_two 
from (select COL1 as col_one, row_number() over (order by col1) as seqnum 
     from table_1 
    ) c1 join 
    (select COL2 as col_two, row_number() over (order by col2) as seqnum 
     from table_2 
    ) c2 
    on c1.seqnum = c2.seqnum; 
+0

あなたの提案をお寄せいただきありがとうございます。@Gordon、私は自分のmapreduceコードを書くことに決めました。 –

関連する問題