【发布时间】:2017-08-20 20:53:46
【问题描述】:
我正在使用 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 来编写配置单元表数据。
CREATE TABLE testtable ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
"separatorChar" = ","
"quoteChar" = "'"
)
STORED AS TEXTFILE LOCATION '<location>' AS
select * from foo;
所以,如果 'foo' 表中有空字符串,例如: '1','2','' 。空字符串按原样写入文本文件。文本文件中的数据读取 '1','2',''
但如果 'foo' 包含空值,例如:'1','2',null。空值未写入文本文件。 文本文件中的数据读取 '1','2',
如何确保使用 csv serde 将空值正确写入文本文件。写为空字符串或任何其他字符串都说“nullstring”?
我也试过这个:
CREATE TABLE testtable ROW FORMAT SERDE
....
....
STORED AS TEXTFILE LOCATION '<location>'
TBLPROPERTIES ('serialization.null.format'='')
AS select * foo;
虽然这可能应该用 null 替换空字符串。但这甚至没有做到这一点。
请指导我如何将空值写入 csv 文件。
我是否必须检查选择查询本身(如(NVL 或其他))中列的空值并将其替换为某些内容?
【问题讨论】:
标签: hive