2014-10-02 178 views
1

我正在學習關於將數據從Amazon Kinesis流式傳輸到Amazon EMR上的Hive的教程。我成功地使用Hive Internal Table來完成這項工作,但是當我嘗試使用外部表格時,我遇到了一個奇怪的EOF錯誤。我之前沒有使用STORED BY和STORED AS,我認爲這可能是問題所在。我使用了IBM指南(http://www-01.ibm.com/support/knowledgecenter/SSPT3X_2.1.1/com.ibm.swg.im.infosphere.biginsights.bigsql.doc/doc/bsql_create_table.html)來驗證它們可以一起使用。將數據添加到Hive外部表

這是我用來構建配置單元外部表的代碼。

DROP TABLE apachelog; 

CREATE EXTERNAL TABLE apachelog (
    host STRING, 
    IDENTITY STRING, 
    USER STRING, 
    TIME STRING, 
    request STRING, 
    STATUS STRING, 
    SIZE STRING, 
    referrer STRING, 
    agent STRING 
) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' 
WITH SERDEPROPERTIES (
    "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") ([0-9]*) ([0-9]*) ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\")" 
) 
STORED AS TEXTFILE 
STORED BY 
'com.amazon.emr.kinesis.hive.KinesisStorageHandler' 
TBLPROPERTIES("kinesis.stream.name"="AccessLogStream") 
LOCATION 's3://<bucket-name>/AccessLogStreamOP/'; 

這裏是錯誤:

hive> source create_access_log.hql; 
OK 
Time taken: 0.464 seconds 
FAILED: ParseException line 19:0 missing EOF at 'STORED' near 'TEXTFILE' 

回答

1

按照Hive LangaugeManual DDL

[ 
    [ROW FORMAT row_format] [STORED AS file_format] 
    | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)] 
    ] 

您可使用行格式或存儲BY子句和WITH SERDEPROPERTIES應遵循存儲的

相關問題