【问题标题】:Hive query issue :parametersHive 查询问题:参数
【发布时间】:2014-06-04 04:33:45
【问题描述】:

我需要在参数中分配一个“选择值”并在配置单元代码中使用它,而不是为参数分配常量。

在 Hive 中,设置 a = 10; //但不是这样,我们如何分配动态值,如下所示:

我需要:set a = select max(x) from y; //将表'y'中'x'的最大值分配给'a'参数。

阿耶莎

【问题讨论】:

  • 你能在哪里解决这个问题?

标签: hadoop hive


【解决方案1】:

当您直接从查询中分配值时,您应该使用 select 而不是 set。

SELECT @variable1 = column1, variable2 = column2
FROM table1
WHERE column1 = 'unique value'

INSERT OVERWRITE LOCAL DIRECTORY '<directory>' SELECT * FROM table_name;

【讨论】:

  • 使用上述方法合并'@var1=column1',但出现错误:'ParseException line 1:7 character '@' not supported here' 我目前使用 Hive 版本 0.12,可能就是这样为什么我面临这样的错误。虽然这个问题现在已经解决了,但在最近的 0.13 中出现了异常。在 0.12 hive 版本中是否有任何其他方法可以解决上述问题
【解决方案2】:

无法从 Hive 内部执行此操作,但您可以从 Hive 外部执行此操作,例如在 bash 脚本中:

a=`hive -S -e 'select max(x) from y'`
hive --hiveconf "a=$a" -e '[next query here]'

【讨论】:

  • 我们不能添加:'${hiveconf:a}' 以使用分配给'a'的值。我仍然没有得到你的下一个语句 Joe, "hive --hiveconf "a=$a" -e '[next query here]'"
  • 是的,下一个查询将包含 ${hiveconf:a} 以使用该值。例如,hive --hiveconf "a=$a" -e 'select * from z where x = ${hiveconf:a}'
猜你喜欢
  • 2019-07-08
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 2012-08-03
  • 1970-01-01
相关资源
最近更新 更多