【发布时间】:2020-05-20 10:14:53
【问题描述】:
我想使用 OpenCSVSerde 基于 CSV 文件在 AWS Athena 上创建一个外部表。
CREATE EXTERNAL TABLE `table`(name string, value double, group string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ("separatorChar" = ",", "escapeChar" = "\\","skip.header.line.count"="1", "serialization.null.format"="")
LOCATION 's3://path' ;
该文件包含“值”字段(双精度类型)的一些缺失值。它看起来像这样:
name,value,group
name1,0.5,a
name2,0.2,a
name3,,a
name4,0.11,b
创建它之后,当我尝试运行一些查询(比如简单的“从表中选择 *”)时,Athena 给出了这个错误:
HIVE_BAD_DATA: Error parsing column '1': empty String
正如您从创建外部表查询中看到的那样,我尝试添加 'serialization.null.format'='' 但它似乎不起作用。我找到的唯一解决方案是将列“值”定义为字符串,但这显然不是理想的解决方案(尤其是如果您有很多这样的列)。
你知道如何解决这个问题吗?
谢谢
【问题讨论】:
-
这是
OpenCSVSerDe对非STRING数据类型的限制,每个documentation,您可以尝试使用LazySimpleSerDe吗? -
它确实有效,谢谢!我想使用 OpenCSVSerde 轻松处理我拥有的一些双引号值......但如果有这个限制,我想我必须选择较小的邪恶:)
标签: amazon-web-services hive amazon-athena