hadoop - 如何将查询结果存储到 HiveQL 中的变量中,然后在另一个 select 语句中使用它?

标签 hadoop hive hiveql

如何将查询结果存储到 HiveQL 中的变量中,然后在另一个 select 语句中使用它?

例如,每当我存储一个普通变量并在 select 语句中使用它时,它工作得很好。 设置 a=1; SELECT CASE WHEN b > ${hiveconf:a} THEN NULL ELSE 1 from my_table

但是当我尝试将查询放入变量时,它似乎存储查询而不是运行它并存储结果。这会导致错误。 SET a=SELECT MAX(num) FROM my_other_table; SELECT CASE WHEN b > ${hiveconf:a} THEN NULL ELSE 1 from my_table

错误是:无法识别 select 子句中 'select' 'max' '(' 附近的输入

有人知道解决这个问题的方法吗?我正在使用 Hive 0.13

最佳答案

您不能仅通过配置单元来做到这一点。

如果您的 Hive 查询由 shellpython 等外部脚本控制。您可以执行第一个查询,获取输出,然后将其放入下一个 sql。

或者您可以将 sql 更改为使用 join。您的示例代码可以更改为

select case when b > t.a then NULL else 1 from my_table 
join (select max(num) a from my_other_table) t 

关于hadoop - 如何将查询结果存储到 HiveQL 中的变量中,然后在另一个 select 语句中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29658840/

相关文章:

hadoop - 在Apache PIG中按父值过滤包

hadoop - 钻探配置文件查询

hadoop - 与 Hadoop 堆栈中的 Impala 相比更快的技术?

java - 如何在Hadoop中的namenode -format命令后恢复数据

hql - HQL如何限制每组的记录数?

hadoop - 将实时数据从HDFS流传输到Hive

hadoop - 无法联系配置单元表分区,删除与分区相关的 hdfs 文件后

hadoop - 必须设置 $HADOOP_HOME 或 $HADOOP_PREFIX 或者 hadoop 必须在路径中

performance - 使用 IN 子句参数并行执行 Hive 查询

hadoop - Apache hive : How to convert string to timestamp?