2012-12-31 3 views
9

나는 table_A 있습니다HiveQL UNION ALL

id var1 var2 
1 a b 
2 c d 

Table_B : 내가 원하는 모든 조합 테이블입니다

id var1 var2 
3 e f 
4 g h 

:

:

id var1 var2 
1 a b 
2 c d 
3 e f 
4 g h 

이 내 .hql입니다

CREATE TABLE combined AS 
SELECT all.id, all.var1, all.var2 
FROM (
    SELECT a.id, a.var1, a.var2 
    FROM table_A a 
    UNION ALL 
    SELECT b.id, b.var1, b.var2 
    from table_B b 
) all; 

저는 Edward Capriolo의 프로그래밍 하이브 (Programming Hive) 112 페이지에서 바로 코딩하고 있습니다.

내가 상관없이 위의 표면 상 합리적인 변화가 내가 보는 것이 무엇을 얻을 오류는, "cannot recognize input near '.' 'id' ',' in select expression.는"

내가 테이블 이름과 별칭 사이 "로"를 사용하여 시도입니다, 별표 나는 모든 것을 원하기 때문에 두 테이블에서. 같은 오류. 다른 일을 시도하고 다른 오류가 발생했습니다 ... 내가하고 싶은 것은 UNION 두 개의 테이블입니다. (나는 UNION ALL 대신에 UNION을 시도했다 - 같은 오류).

답변

10

그냥 다른 단어로 바꿉니다. 그것은 예약 된 키워드 인 것 같습니다. 예 :

CREATE TABLE combined AS 
SELECT unioned.id, unioned.var1, unioned.var2 
FROM (
    SELECT a.id, a.var1, a.var2 
    FROM table_A a 
    UNION ALL 
    SELECT b.id, b.var1, b.var2 
    from table_B b 
) unioned; 
0

비슷한 검색어가 있습니다. 그냥 테이블 이름과 열 이름을 변경합니다. 이 시도. 희망이 당신을 도와줍니다.

create table new_table as 
select 
distinct 
id, name 
FROM 
table1 
union all 
select 
distinct 
id,name 
from 
table2 
;