FAILED:SemanticException [错误10008]:第5:16行不明确的表别名' in_2051_1'

时间:2015-03-16 22:58:55

标签: hive

INSERT  OVERWRITE  TABLE out_2051
SELECT in_2051_0.column1,in_2051_0.column2,in_2051_1.column2,in_2051_1.column1
FROM in_2051_0
RIGHT OUTER JOIN in_2051_1 ON (in_2051_0.column2 = in_2051_1.column1)
LEFT OUTER JOIN in_2051_1 ON (in_2051_0.column2 = in_2051_1.column1)
;
  

FAILED:SemanticException [错误10008]:第5:16行不明确的表别名'in_2051_1'

这个错误是什么意思,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我可以发现左右外连接两个表格具有相同的列意味着" FULL OUTER JOIN"。

将SQL更改为

INSERT  OVERWRITE  TABLE out_2051
SELECT in_2051_0.column1,in_2051_0.column2,in_2051_1.column2,in_2051_1.column1
FROM in_2051_0
FULL OUTER JOIN in_2051_1 ON (in_2051_0.column2 = in_2051_1.column1)

我认为你的错误意味着最后的in_2051_1表格引用与第4行相同。

在第5行的ON条款中。 in_2051_1.column1含糊不清,hive不知道这个in_2051_1是正确的连接一个或左连接一个。您可以为in_2051_1提供一个别名,例如' in_2051_1_2'在第5行。

我认为FULL OUTER JOIN就是你想要的。