2013-07-18 81 views
3

當運行一個蜂房腳本用命令蜂房參數(-d | --define)失敗,一個字符串參數

蜂房-d arg_partition1 =「P1」 -f test.hql

它返回錯誤

FAILED:SemanticException [錯誤10004]:行3:36無效表別名或列引用 'P1':(可能的列名稱是:線,分區1)

腳本名稱test.hql

DROP TABLE IF EXISTS test; 
CREATE EXTERNAL TABLE IF NOT EXISTS test (Line STRING) 
    PARTITIONED BY (partition1 STRING); 
ALTER TABLE test ADD PARTITION (partition1="p1") LOCATION '/user/test/hive_test_data'; 
SELECT * FROM test WHERE partition1=${arg_partition1}; 

如果我修改分區是一個整數,然後它工作正常,並返回正確的結果。

如何使用字符串參數運行Hive腳本?

回答

2

在調用配置單元(如-d arg_partition1=\"p1\")時,您將不得不跳過引號以使其工作。

但是,我不明白爲什麼在任何情況下都必須將引號添加到替換字符串中。假設你在編寫查詢時知道你的字段的數據類型,所以如果partition1是一個字符串,那麼在查詢中包含引號,例如WHERE partition1="${arg_partition1}";,如果它是一個整數,則完全忽略它們。

+0

感謝您的幫助。 – 0111001101110000