如何在Hive中将两个表连接在不同的数据库中?

时间:2014-12-20 23:25:09

标签: hive

我遇到过几次问题:我在db1中有一个表table1。我在db2中有table2。我如何加入两者之间?

显而易见的事情是:

SELECT *
FROM db1.table1 INNER JOIN db2.table2
ON db1.table1.field1 = db2.table2.field2;
但是,Hive并不喜欢这样;它开始治疗" table1"和" table2"好像它们是列名," db1"和" db2"作为表名,并在他们不存在时抱怨。如何在不同数据库中的两个表之间进行连接?

1 个答案:

答案 0 :(得分:16)

在Hive中,不同数据库中的表之间的连接统一要求为每个{db,table}对设置别名。因此,您必须使用:

而不是问题中提供的语法
SELECT *
FROM db1.table1 alias1 INNER JOIN db2.table2 alias2
ON alias1.field1 = alias2.field2;

这很有效。当然,重要的是要记住,如果您要求 SELECT 语句中的特定字段,那么别名也适用于那里。所以:

SELECT db1.table1.field1, db2.table2.field2

变为:

SELECT alias1.field1, alias2.field2