重新分区不适用于 Spark 中的 xml 文件

repartition not working with xml file in Spark

提问人:Nemanja 提问时间:7/15/2023 最后编辑:Nemanja 更新时间:7/16/2023 访问量:59

问:

我有数据帧,我想将其另存为多个xml文件。这是我的代码:

 employees
                .repartition(col("first_name"))
                .write()
                .option("maxRecordsPerFile", 5)
                .mode(SaveMode.Overwrite)
                .partitionBy("first_name")
                .format("xml")
                .save("C:/spark_output/");

我希望输出看到这样的输出:

spark_output/
  first_name=Alex
    part-00000.xml
    part-00001.xml
  first_name=Mike
    part-00000.xml
    part-00001.xml
  first_name=Nicole
    part-00000.xml
    part-00001.xml

但输出仅包含一个 10 行的文件

我不明白这是怎么回事?我该如何解决这个问题?

任何建议将不胜感激。 谢谢

apache-spark apache-spark-sql databricks spark-java

评论

0赞 Zach King 7/15/2023
这回答了你的问题吗?maxRecordsPerFile 在 Azure Data Bricks 中不起作用
0赞 Nemanja 7/15/2023
@ZachKing不,问题似乎是重新分区不适用于 XML 文件。
0赞 Srinivas 7/16/2023
为什么要将数据存储在XML文件中?我相信xml文件是不可拆分的,它会导致数据加载性能。
0赞 Nemanja 7/16/2023
@Srinivas我们有一个任务,从包含 5m 条记录的大型数据集创建站点地图,我们决定使用 Spark 来实现此目的

答:

1赞 Zach King 7/16/2023 #1

.partitionByspark-xml(Databricks 的开源 XML 数据接收器)不受支持,并且似乎不在 GitHub 中项目的路线图上

https://github.com/databricks/spark-xml/issues/327