我正在使用“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'、''。空字符串按原样写入文本文件。textfile中的数据读取“1”、“2”、“0”
但如果'foo'包含空值,例如'1','2',则为空。空值未写入文本文件。文本文件中的数据读取“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文件。
我是否需要检查select查询本身中的列的空值,比如(nvl或其他什么)并用其他内容替换它?
1条答案
按热度按时间koaltpgm1#
open csv serde忽略“serialization.null.format”属性,您可以使用以下步骤处理空值