如何传递键值对

v6ylcynt  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(242)

我有一个create table脚本,其中表名将在运行时决定。如何将值传递给sql脚本?
我在尝试这样的事情

hcat -e "create table ${D:TAB_NAME} (name string)" -DTAB_NAME=person

但我总是出错。我能得到正确的语法吗?

wlsrxk51

wlsrxk511#

试试这个:

hcat -e 'create table ${hiveconf:TAB_NAME} (name string);' -DTAB_NAME=person2

这里有两点需要注意:
在shell中,默认变量展开为 $ 所以你的 ${D:TAB_NAME} 在传递给hcat解析器之前就被扩展为空。所以,要么逃走 $ 或使用强引用: '' .
使用 hiveconf 而不是 D 对于变量替换,hcat在hoods下仍然使用hive来解析命令。

相关问题