2017-01-10 5 views
0

Я хочу выполнить взрыв в столбце в состоянии соединения.Hive - Explode in JOIN Условие

select 
t1.a,t2.b, t2.c 
from table1 AS t1 
join (select b,LATERAL VIEW explode(ABCD) AS c from person) AS t2 ON (t1.c=t2.c) 

Но этот запрос не работает. Я подозреваю, что подзапрос работает не так, как ожидалось. В подзапросе я выбрал два столбца, один - столбец b, а другой - столбец c, который является взрывом.

Правильно ли этот способ написания подзапроса? Если не так, как я могу это достичь.

Ошибка:

Error while compiling statement: FAILED: SemanticException Cannot do equality join on different types: string and map<bigint,array<string>> 
+0

, что это ошибка, которую вы получаете, вы можете разместить журнал? также вы уверены, что ваше имя столбца находится в таблице? –

+0

@Rijulsahu: Добавлено сообщение об ошибке –

ответ

2
CREATE TABLE people(b int,abcd array<String>); 

INSERT INTO people SELECT 1, ARRAY("bob", "alice", "tom") from dummy limit 1; 
INSERT INTO people SELECT 2, ARRAY("john", "mike", "jack") from dummy limit 1; 

create table table1(name string, salary int); 
insert into table1 values("bob",1000); 
insert into table1 values("alice",500); 

hive> select b,c from people LATERAL VIEW explode(ABCD) ep AS c; 
OK 
1  bob 
1  alice 
1  tom 
2  john 
2  mike 
2  jack 


hive> select 
t1.salary,t2.b, t2.c 
from table1 AS t1 
join (select b,c from people LATERAL VIEW explode(ABCD) ep AS c) AS t2 ON (t1.name=t2.c) 

OK 
1000 1  bob 
500  1  alice 
+0

Ошибка при компиляции оператора: FAILED: SemanticException Невозможно выполнить объединение равенства на разных типах: строка и карта > –