2014-10-02 130 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应遵循存储的

相关问题