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 在数组中添加额外的双引号以节省时间的主要内容,如果未能解决你的问题,请参考以下文章