2014-10-31 39 views
0

我有一個創建表腳本,其中表名將在運行時決定。如何將值傳遞給sql腳本?Hadoop Hcatalog - 如何傳遞鍵值對

我想是這樣的

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

但我不斷收到錯誤。 我可以得到正確的語法嗎?

回答

0

試試這個:

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

這裏有兩點需要注意:

  1. 在外殼,默認變量擴展$所以你${D:TAB_NAME}是越來越擴大到什麼,甚至獲得通過,以hcat前解析器。因此,要麼轉義$,要麼使用強引號:''

  2. 使用hiveconf而不是D代替變量,因爲引擎蓋下的hcat仍然使用配置單元來解析命令。