Spark SQL导出CSV时保留null值而非空字符串的问题求助
解决Spark SQL导出CSV时保留NULL值的问题
问题说明
使用Spark SQL导出db.test123表数据为CSV格式时,原表中的NULL值被自动替换为空字符串,需要将NULL值保留为字符串null。
当前操作代码
spark-sql> directory insert overwrite /temp/t1_csv as select * FROM db.test123 ORDER BY id using csv with options(delimiter=|, coalesce=1);
hdfs dfs -get /temp/t1_csv/part-00000* .
当前输出结果
zcat part-00000-*.gz 1001|501|ABCD| 1002|501||XYZ
期望输出结果
zcat part-00000-*.gz 1001|501|ABCD|null 1002|501|null|XYZ
解决方案
在CSV导出的options中添加nullValue='null'配置,指定NULL值对应的输出字符串为null。修改后的导出代码如下:
spark-sql> directory insert overwrite /temp/t1_csv as select * FROM db.test123 ORDER BY id using csv with options(delimiter=|, coalesce=1, nullValue='null');
执行修改后的代码后,重新导出并下载文件,即可得到包含null字符串的CSV输出,与期望结果一致。
内容的提问来源于stack exchange,提问作者Ikshwaku Baruah
相关产品推荐
相关产品推荐

