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附加额外的双引号
Laravel 雄辩的 JSON 字段,选择属性产生额外的双引号