2

我有一个中等大小的 xml 文件(200MB,bz2),我正在使用 spark-xml 在具有 1 个主节点和两个核心节点的 AWS emr 集群上加载该文件,每个节点具有 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 在加载时对文件进行分区以更好地使用计算资源?我知道我可以在加载后进行分区。

4

1 回答 1

3

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

experiment.repartition(200)

其中 200 是您要使用的执行器的任何 nbr。

重新分区

于 2018-02-15T22:27:48.910 回答