hadoop - 向 Hive 外部表添加数据

标签 hadoop hive amazon amazon-kinesis

我正在学习有关将数据从 Amazon Kinesis 流式传输到 Amazon EMR 上的 Hive 的教程。我能够成功地使用 Hive 内部表执行此操作,但是当我尝试对外部表执行相同操作时,我遇到了一个奇怪的 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) 来验证它们是否可以一起使用。

这是我用来构建配置单元外部表的代码。

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'

最佳答案

根据Hive LangaugeManual DDL

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

您可以使用 ROW FORMAT 或 STORED BY 子句,并且 WITH SERDEPROPERTIES 应该跟在 STORED BY 之后

关于hadoop - 向 Hive 外部表添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26164498/

相关文章:

hadoop - 设计 MapReduce 函数以查找集合列表之间的交集

java - hadoop如何通过引用传递?

mysql - 当我尝试删除数据库并且使用 mysql 作为元存储时,为什么 Hive 会给出元异常?

amazon-web-services - aws s3 如何处理覆盖文件和访问?

amazon-s3 - 从Amazon S3(HTTPS)加载图像时在iPad上获取 “The certificate for this server is invalid.”,但在模拟器上没有错误

hadoop - MapReduceIndexerTool 没有正确地重新索引文档

bash - 从 HDFS 获取前两个文件

amazon-web-services - AWS EC2 弹性 IP 带宽使用情况和费用

hadoop - 多个节点中的 Hive 表 - 处理

java - Hive的Presto连接问题:读取超时异常