2012-12-31 14 views
9

Ho 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 

Tutto quello che voglio è tavolo, combinato:

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

Questo è il mio .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; 

Sto codificando direttamente da pagina 112 di Programming Hive di Edward Capriolo, et al.

L'errore che ottengo, non importa ciò che apparentemente ragionevole variazione di quanto sopra che provo, è "cannot recognize input near '.' 'id' ',' in select expression."

Ho provato con "come" tra il nome della tabella e l'alias, asterischi dal momento che vogliono tutto da entrambi i tavoli. Lo stesso errore. Ho provato altre cose e ottenuto altri errori ... Tutto quello che voglio fare è UNION due tabelle. (Ho provato UNION invece di UNION ALL - stesso errore).

risposta

10

Basta sostituire tutto con un'altra parola. Sembra essere una parola chiave riservata. E.g:

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

Ho una query simile che funziona. Basta cambiare il nome della tabella e i nomi delle colonne. Prova questo. Spero che questo ti aiuti.

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