pyspark AWS Glue -将Spark Dataframe 导出为CSV,将除NULL以外的所有值都包含在引号中

rsaldnfx  于 2023-04-11  发布在  Spark
关注(0)|答案(2)|浏览(175)

在AWS Glue中,我有一个从SQL Server表加载的Spark dataframe,所以它的数据中确实有实际的NULL值(而不是字符串“null”)。我想将这个dataframe写入CSV文件,除了那些NULL值之外,所有值都用双引号引起来。
我尝试在dataframe.write操作中使用quoteAll=TruenullValue=''emptyValue=''选项:

df.coalesce(1).write.format("csv").mode('overwrite').options(header='true', path=output_path, escape='\\', quoteAll=True, nullValue='', emptyValue='').save()

然而,这也引用了NULL值-这里是一个col 2为NULL的示例:

col1, col2, col3
"value1","","value3"

相反,我需要这个:

col1, col2, col3
"value1",,"value3"

什么是最简单和/或最干净的方法来实现这一点(我意识到最干净和最简单的可能是2个不同的解决方案...)?
谢谢大家!

qoefvg9y

qoefvg9y1#

尝试更改参数nullValue并设置为nullValue=None

qnakjoqk

qnakjoqk2#

作为一种变通方法,我最终在源端的select()逻辑中引用了数据,我的源是一个SQL Server DB表,所以很容易检查null;然后获取所有非NULL值,在它们周围加上引号,并对值中现有的引号进行转义。然后在CSVWriter参数的目标端,完全禁用所有引号/转义。
可能不是最好的解决方案,因为感觉就像我在源端修复一个目标问题;但确实有效
我也在考虑写一个自定义的CSVWriter,通过某种方式继承原来的一个,但很难找到正确的地方做覆盖...任何指针到这一点将不胜感激!

相关问题