将本地参数传递给Hadoop脚本

时间:2014-09-02 13:39:46

标签: hadoop hive command-line-arguments

据我了解,以下内容将导致传递全局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"

但这似乎效率低下,我仍然想知道上面的选项是否可行。

1 个答案:

答案 0 :(得分:1)

我找到了选项-define here

hive -e 'SELECT * FROM DATETABLE WHERE DATE = ${DATE}' -define DATE='01/01/2000'