2016-09-29 59 views
-2

我的SQL文件內容是:蜂巢-hiveconf -f xxx.sql錯誤

CREATE EXTERNAL TABlE unLock(logTime TIMESTAMP, ystID STRING,deviceID STRING) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' 
WITH SERDEPROPERTIES ("field.delim"="$$") 
STORED AS TEXTFILE 
LOCATION concat(hdfs://hadoop1:9000/logHive/unLock/,${hiveconf:logdir}); 

和我的shell腳本文件內容是:

hive -hiveconf logdir="$(date +'%Y/%m/%d/')" -f /home/yst/create.sql 

當我運行在cmd中的shell文件中,錯誤是:

FAILED: ParseException line 7:9 mismatched input 'concat' expecting StringLiteral near 'LOCATION' in table location specification 

我不知道爲什麼。我只想要蜂巢表的位置是當前的日期文件。

回答

1

沒有測試還沒有,但是這可能工作:

LOCATION 'hdfs://hadoop1:9000/logHive/unLock/${hiveconf:logdir}'

+0

也失敗了。 FAILED:執行錯誤,從org.apache.hadoop.hive.ql.exec.DDLTask返回代碼1。來自hdfs:// hadoop1:9000/logHive/useAppDuration/$(hiveconf:logdir)的MetaException(消息:java.lang.IllegalArgumentException:Pathname/logHive/useAppDuration/$(hiveconf:logdir)不是有效的DFS文件名。) – Chris

+0

使用這個,不能獲得logdir值 – Chris