首页 > 解决方案 > 将空字符串读取为 Null Athena

问题描述

我想通过 s3 上的 csv 文件在 Amazon Athena 中创建一个表。CSV 文件看起来像

id,name,invalid
1,abc,
2,cba,y

创建表的代码看起来像

CREATE EXTERNAL TABLE IF NOT EXISTS {schema}.{table_name} (
id int,
name string,
invalid string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = ',',
  'field.delim' = ','
)
LOCATION '{s3}'
TBLPROPERTIES ('has_encrypted_data'='false','compressionType'='gzip')

所以,我的问题是 Athena 将空字符串读取为实际上是空字符串,但我希望看到它为 null。我在文档中没有找到任何属性。

标签: csvamazon-athena

解决方案


LazySimpleSerDe将默认解释\NNULL,但您可以将其配置为使用具有serialization.null.formatserde 属性的其他字符串。

有关CSV 和 Athena 的本指南,了解更多详细信息。


推荐阅读