Hadoop Hcatalog-如何传递键值对

Hadoop Hcatalog-如何传递键值对,hadoop,hcatalog,Hadoop,Hcatalog,我有一个createtable脚本,表名将在运行时决定。如何将值传递给sql脚本 我正在尝试这样的事情 hcat -e "create table ${D:TAB_NAME} (name string)" -DTAB_NAME=person 但我总是出错。 我能得到正确的语法吗?试试这个: hcat -e 'create table ${hiveconf:TAB_NAME} (name string);' -DTAB_NAME=person2 这里有两件事需要注意: 在shell中,默认变量

我有一个createtable脚本,表名将在运行时决定。如何将值传递给sql脚本

我正在尝试这样的事情

hcat -e "create table ${D:TAB_NAME} (name string)" -DTAB_NAME=person
但我总是出错。 我能得到正确的语法吗?

试试这个:

hcat -e 'create table ${hiveconf:TAB_NAME} (name string);' -DTAB_NAME=person2
这里有两件事需要注意:

  • 在shell中,默认变量扩展是
    $
    ,因此您的
    ${D:TAB\u NAME}
    在传递给hcat解析器之前就被扩展为空。因此,要么转义
    $
    ,要么使用强引用:
    '

  • 使用
    hiveconf
    代替
    D
    进行变量替换,因为引擎罩下的hcat仍在使用配置单元解析命令