向配置单元外部表中添加数据

8wtpewkr  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(387)

我正在遵循一个关于从amazon kinesis到amazon emr上的hive的流数据的教程。我成功地用一个配置单元内部表实现了这一点,但是当我尝试用同样的方法处理外部表时,我遇到了一个奇怪的eof错误。我以前没有使用过stored by和stored as together,我认为这可能是问题所在。我用了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)以验证它们是否可以一起使用。
下面是我用来构建配置单元外部表的代码。

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'
zi8p0yeb

zi8p0yeb1#

根据hive Langaugemanal ddl

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

您可以使用行格式或stored by子句,并且serdeproperty应该跟在stored by之后

相关问题