繁体   English   中英

Pyspark 将 json 值作为字符串写入 csv 列

[英]Pyspark write json value as string in csv column

我正在使用DatabricksPyspark

我有一个笔记本,可以将 csv 文件中的数据加载到dataframe中。

dataframe = spark.read.option("inferSchema", "true")\
                              .option("header", "true")\
                              .csv(csv_files)

csv 文件可以包含包含 json 值的列。

csv 文件示例:

姓名 年龄 价值 价值2
亚历克斯 23 0 3
汤姆 25 1 4
杰夫 25 "{""属性"" : ""值"",""属性 2"" : ""值 2"" }" 5

然后我对数据框应用一些逻辑,比如agrupations和类似的东西。

数据框示例:

姓名 年龄 价值 价值2
亚历克斯 23 0 3
汤姆 25 1 4
杰夫 25 { ""property"" : ""value"",""property2"" : ""value2"" } 5

最后我将数据框保存到一个 csv 文件中,比如说newfile.csv

dataframe.repartition(1).write.mode("overwrite").option("header", "true").option("escape",'"').csv(destination_folder)

问题是newfile.csv如下所示:

姓名 年龄 价值 价值2
亚历克斯 23 0 3
汤姆 25 1 4
杰夫 25 {““适当的价值”” ""property2"":""value2""}

当我们将 csv 文件作为数据框加载时,它会去掉双引号,这就是为什么当我们保存该值时它不再包含双引号的原因。

将 json 逗号作为 csv 文件中的分隔符。 我尝试使用选项转义,但不工作。

关于如何解决这个问题的任何想法? 我想将 json 值保存为字符串值,就像第一个 csv 示例一样。

在这里,您需要使用不同于逗号的分隔符保存 .csv 文件,因为逗号将 json 分隔为两个不同的列。 您可以这样做:

dataframe.repartition(1).write.mode("overwrite").option("header", "true").option("sep", "|").csv(destination_folder)

您可以转义 json 中的引号,然后在 csv 中引用整个 json。 那就是使用 \ 来转义引号而不是重复引号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM