2017-08-27 16 views
-2

我對蜂巢相對較新。探索如何合併兩個沒有通過密鑰相互連接的表。所以,我沒有在查詢中使用'ON'條件。HIVE加入兩個表的行數不同給出錯誤的列值

的下面是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; 

我不是從如何在沒有行2 TABLE_1

+0

因爲你在做交叉連接 - '1 x 2 = 2 rows'。你加入的標準是什麼?或者如你所說,「合併」?通過查看你的數據,似乎沒有。 – GurV

+0

Hi @GurwinderSingh:這些表格與鍵無關。所以在我的情況下,我沒有給出任何條件。 –

+0

你不能以這種方式加入。你有任何的順序嗎?也許按照兩列的升序排列,然後再加上行號? – GurV

回答

0

的「你好」的結果來確定,我不知道如何查詢工作沒有on條款。但是,你可以使用row_number()來做你想做的事情,像這樣:

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代碼,因爲除了連接表之外,我不得不做很多事情。 –

相關問題