2016-09-29 6 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}); 

と私のシェルスクリプトファイルの内容は次のとおりです。

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

私はCMDでシェルファイルを実行し、エラーは:

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)の有効なDFSファイル名ではありません) – Chris

+0

(MetaException:メッセージ:java.lang.IllegalArgumentException:Pathname/logHive/useAppDuration/$(hiveconf:logdir)これを使用して、logdir値を取得できません – Chris