【问题标题】:Set date function as variable and use in beeline and hql file (hive)将日期函数设置为变量并在直线和 hql 文件 (hive) 中使用
【发布时间】:2016-05-22 13:58:34
【问题描述】:

谁能告诉我如何解决这个问题。

我想使用 from_unixtime(unix_timestamp() - 86400, 'yyyyMMdd) 作为变量的值,并在存储在 hql 文件中的查询的 where 子句中使用它。我试过了:

beeline --hiveconf date=from_unixtime(unix_timestamp(), 'yyyyMMdd) -f path/file.hql(在 .hql 文件中:WHERE date

由于日期功能,它不起作用。有什么方法可以先在某个脚本中获取日期值,然后将其与 hql 文件一起使用?我只看到了 hive cli 的示例,但没有看到 beeline 的示例,我尝试了一些不同的方法,但无法使其正常工作。非常感谢一些帮助。该查询适用于硬编码日期。

谢谢!

【问题讨论】:

  • 不使用 hive udfs 生成日期,而是使用 unix 日期函数为 hive 变量生成日期值
  • @KSNidhin 你能给我举个例子吗,我是新手,会很有帮助的!

标签: hadoop hive hadoop-partitioning


【解决方案1】:

通过使用 unix 日期函数,您可以将日期转换为所需的格式,然后传递给 hive 变量。以下是您可以使用的示例命令:

cur_date=`date +%Y%m%d`
beeline --hiveconf date=${cur_date} -f path/file.hql

然后在您的配置单元查询中,只需在需要的地方使用 ${date}。

希望对你有帮助

【讨论】:

  • 谢谢!如何从该日期格式中减去 30 天?我在 mac 上使用终端,我在 google 上找到的一些命令似乎不起作用:)
  • 好的,谢谢,但是代码不起作用查询似乎没有以某种方式获取变量值:(
  • 哪一个?我提到的那个?我刚刚尝试了以下命令并且它有效;今天=date +%Y-%m-%d hive -hivevar client_date=${today} -f query.hql > ${today}.tsv
  • 当我将变量直接设置为函数时,我让它工作了(beeline --hiveconf date= date +%Y-%m-%d。我的查询有问题 LIMIT 10 ; 没用,但我现在可以忍受。现在我必须弄清楚如何减去 30 天,如果你有直接的答案,请告诉我 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 2022-08-16
  • 1970-01-01
相关资源
最近更新 更多