csv - 将空字符串读取为 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。我在文档中没有找到任何属性。
解决方案
LazySimpleSerDe
将默认解释\N
为NULL
,但您可以将其配置为使用具有serialization.null.format
serde 属性的其他字符串。
有关CSV 和 Athena 的本指南,了解更多详细信息。
推荐阅读
- c# - ASP.NET Core:模态不会将值传递给控制器方法
- plot - 朱莉娅死于等高线图的创作
- arrays - 循环遍历 Numpy 数组和切片
- javascript - Google Charts - 组织结构图出现损坏
- node.js - 为什么 cron 作业会导致 Node.js pupeeter schdule 中的备忘录泄漏?
- azure - 使用 Runbook 删除 Azure 虚拟机规模集实例
- xml - 如何使用 XSLT 比较两个 XML 节点
- jquery - jquery在加载时改变类
- mysql - 删除 MySQL 中的 null 值并将非 null 值合并到一个单元格中
- sql-server - SQL Server 从阻塞会话链中获取主/父阻塞会话 ID