![](/img/trans.png)
[英]PySpark - rename key names in JSON stored as string column in CSV file
[英]Pyspark write json value as string in csv column
我正在使用Databricks和Pyspark 。
我有一个笔记本,可以将 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.