如何通过使用spark-xml加载大型XML文件来增加并行性?

时间:2018-02-15 22:14:27

标签: scala performance apache-spark bz2

我有一个中等大小的xml文件(200MB,bz2),我在AWS emr集群上使用spark-xml加载,该集群有1个主节点和2个核心节点,每个节点有8cpus和32GB RAM。

import org.apache.spark.sql.SQLContext
import com.databricks.spark.xml._

val sqlContext = new SQLContext(sc)
val experiment = sqlContext.read
  .format("com.databricks.spark.xml")
  .option("rowTag", "EXPERIMENT")
  .load("s3n://bucket/path/meta_experiment_set.xml.bz2")

这个加载需要相当长的时间,而我所知道的只有一个分区。是否有可能告诉spark在加载时对文件进行分区以更好地使用计算资源?我知道我可以在加载后进行分区。

1 个答案:

答案 0 :(得分:1)

您可以重新分区以增加并行度:

experiment.repartition(200)

其中200是你想要使用的任何执行者。

请参阅repartition