我在HUE的Beeswax查询编辑器中尝试了以下查询:
SET MAXDATE=(SELECT MAX(DATA_DAY) FROM DB1.DESTINATION_TABLE);
SELECT COUNT(*) FROM DB2.SOURCE_TABLE
WHERE YEAR(DATA_DAY) >= '2015'
AND DATA_DAY > ${HIVECONF:MAXDATE};
此查询将不会运行,并产生以下错误消息:
有什么问题的建议吗?我不明白KW_ROLE消息的含义。
我来自SQL Server,并且只会在SQL Server中运行以下命令,但是正在尝试找到功能相同的Hadoop / Hive。
SELECT COUNT(*) FROM DB2.SOURCE_TABLE
WHERE YEAR(DATA_DAY) >= '2015'
AND DATA_DAY > (SELECT MAX(DATA_DAY) FROM DB1.DESTINATION_TABLE)
最佳答案
据我所知,hive
也支持以下语法。
SELECT COUNT(*) FROM DB2.SOURCE_TABLE a
JOIN
(SELECT MAX(DATA_DAY) AS max_date FROM DB1.DESTINATION_TABLE) b
WHERE YEAR(a.DATA_DAY) >= '2015'
AND a.DATA_DAY > b.max_date;
但是,如果
DB1.DESTINATION_TABLE
上有一堆数据,那不是一个好的实现。在这种情况下,每个查询将在
SELECT MAX(DATA_DAY) FROM DB1.DESTINATION_TABLE
中分配大量子查询任务。如果可能,您可以将
SELECT MAX(DATA_DAY) FROM DB1.DESTINATION_TABLE
结果存储在另一个表中,也许是Max_table
。然后SQL将是这样的:
SELECT COUNT(*) FROM DB2.SOURCE_TABLE
JOIN Max_table
WHERE YEAR(DB2.SOURCE_TABLE.DATA_DAY) >= '2015' and
DB2.SOURCE_TABLE.DATA_DAY > (Max_table.DATA_DAY)
关于hadoop - Hadoop-在查询中声明变量时出现错误消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32750361/