Pyspark 在数组中添加额外的双引号以节省时间

Posted

技术标签:

【中文标题】Pyspark 在数组中添加额外的双引号以节省时间【英文标题】:Pyspark adding additional double quotes in array at saving time 【发布时间】:2021-11-15 14:27:26 【问题描述】:

我有一个 Spark 3.x 的小型集群设置。我已经阅读了一些数据,转换后,我必须将其保存为 JSON。但我面临的问题是,在数组类型的列中,Spark 在编写为 json 文件时会添加额外的双引号。 样本数据框数据

我正在使用以下命令将此数据帧保存为 JSON

df.write.json("Documents/abc")

保存的输出如下

最后,架构信息如下

【问题讨论】:

【参考方案1】:

字符串数组的元素在数据中包含双引号,例如第一个元素是"Saddar Cantt, Lahore Punjab Pakistan" 而不是Saddar Cantt, Lahore Punjab Pakistan。您可以在使用 transform 和 replace 编写 json 之前从字符串中删除多余的双引号:

df.withColumn("ADDRESS", F.expr("""transform(ADDRESS, a -> replace(a, '"'))""")) \
    .write.json("Documents/abc")

【讨论】:

谢谢,如果我必须删除换行符而不是双引号怎么办。 @HafizMuhammadShafiq 你能试试transform(ADDRESS, a -> replace(a, '\n'))吗?

以上是关于Pyspark 在数组中添加额外的双引号以节省时间的主要内容,如果未能解决你的问题,请参考以下文章

Spark数据框databricks csv附加额外的双引号

如何在ios中将字典的双引号数组解析为json?

Laravel 雄辩的 JSON 字段,选择属性产生额外的双引号

从 JSON 对象/字符串或 Java 脚本变量中删除开头和结尾的双引号?

从json响应swift中删除数组中的双引号

js 怎么去除数组子对象的双引号