在Hive中编写带有where子句的嵌套select语句

Sha*_*riq 1 hadoop hive hiveql

我需要在Hive查询的where子句中执行嵌套选择.示例代码段如下;

select*
from TableA
where TA_timestamp>(从TableB中选择timestmp,其中id ="hourDim")

这是可能的还是我在这里做错了,因为我在运行上面的脚本时遇到了错误?

为了进一步阐述我想要做的事情,我发布了一个带有时间戳的cassandra键空间.定期(例如每小时)这个统计数据将使用配置单元进行汇总,一旦总结出数据将与相应的小时分开存储.因此,当查询第二次运行(和连续运行)时,查询应仅在新数据上运行(即 - timestamp> previous_execution_timestamp).我试图通过将最新执行的时间戳存储在单独的配置单元表中,然后使用该值过滤掉原始统计数据.

使用配置单元可以实现这一点吗?!

YAB*_*DOU 5

子查询一个内部的WHERE子句不支持在蜂巢: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SubQueries

但是,通常可以使用JOIN语句来获得相同的结果:https: //karmasphere.com/hive-queries-on-table-data#join_syntax

例如,这个查询:

   SELECT a.KEY, a.value
   FROM a
   WHERE a.KEY IN
   (SELECT b.KEY FROM B);
Run Code Online (Sandbox Code Playgroud)

可以改写为:

   SELECT a.KEY, a.val
   FROM a LEFT SEMI JOIN b ON (a.KEY = b.KEY)
Run Code Online (Sandbox Code Playgroud)