据我了解,以下内容将导致传递全局Hive变量:
hive -hiveconf DATE='01/01/2000' -f test_script.hql
可以用
调用 SELECT * FROM DATETABLE WHERE DATE = ${hiveconf:DATE}
我知道可以在脚本中定义局部变量并通过执行以下方式调用:
set DATE='01/01/2000'
SELECT * FROM DATETABLE WHERE DATE = ${DATE}
但是,如果想要为每个脚本设置本地参数提交许多作业,我们如何从命令行传递它们?
重点是避免一个脚本快速连续提交由另一个脚本设置的hiveconf:DATE
。
编辑:
我想这可行,创建一个shell脚本并将变量传递给shell脚本,然后将它们传递给各个查询:
#!/bin/bash
FIRST_QUERY = "SELECT * FROM DATETABLE WHERE DATE = '$DATE'"
hive -e "$FIRST_QUERY"
但这似乎效率低下,我仍然想知道上面的选项是否可行。
答案 0 :(得分:1)
我找到了选项-define
here:
hive -e 'SELECT * FROM DATETABLE WHERE DATE = ${DATE}' -define DATE='01/01/2000'