0
我有一個創建表腳本,其中表名將在運行時決定。如何將值傳遞給sql腳本?Hadoop Hcatalog - 如何傳遞鍵值對
我想是這樣的
hcat -e "create table ${D:TAB_NAME} (name string)" -DTAB_NAME=person
但我不斷收到錯誤。 我可以得到正確的語法嗎?
我有一個創建表腳本,其中表名將在運行時決定。如何將值傳遞給sql腳本?Hadoop Hcatalog - 如何傳遞鍵值對
我想是這樣的
hcat -e "create table ${D:TAB_NAME} (name string)" -DTAB_NAME=person
但我不斷收到錯誤。 我可以得到正確的語法嗎?
試試這個:
hcat -e 'create table ${hiveconf:TAB_NAME} (name string);' -DTAB_NAME=person2
這裏有兩點需要注意:
在外殼,默認變量擴展$
所以你${D:TAB_NAME}
是越來越擴大到什麼,甚至獲得通過,以hcat前解析器。因此,要麼轉義$
,要麼使用強引號:''
。
使用hiveconf
而不是D
代替變量,因爲引擎蓋下的hcat仍然使用配置單元來解析命令。