在hive中的命令行参数中传递列表

时间:2015-12-31 11:00:10

标签: list hive command-line-arguments where-in

基本上我想自动化基于hive查询的作业。这将把列表作为文件和查询的输入,通过使用此输入应用过滤器来生成报告。输入是一个列表,我想在hive查询中作为“where-in”条件传递。我的查询看起来像,

// temp.sql // 插入表1 SELECT * FROM Table2其中pixel_id在($ PIXEL);

我试图在这样的命令行中传递输入, hive -f temp.sql -d PIXEL ='('608207','608206','608205','608204','608203','608201','608184','608198','608189')'> ; temp.log 2>& 1&

我不确定这是否正确?

任何人都有想法解决这个问题吗?

请建议我一些解决方法。

2 个答案:

答案 0 :(得分:0)

如果pixel_id是数字,您可以使用这个简单的脚本:

  1. 使用hive -e "select * from orders where order_id in (${1})"
  2. 创建shell脚本script.sh
  3. 通过运行chmod + x script.sh
  4. 保存并更改权限
  5. 通过将值作为参数传递来运行shell脚本,例如./script.sh“1,2,3,4”
  6. 你可以通过转义“喜欢这个”\“1 \”,\“2 \”“

    来为字符串列做到这一点

答案 1 :(得分:0)

尝试像用','分隔列表的字符串一样传递-

在bash上运行此命令:Event::fake([NewItemCreated::class]);

考虑脚本如下:hive -hiveconf myargs="1','2','3','4"

相关问题