如何通过使用 spark-xml 加载大型 XML 文件来提高并行度?
How can I increase parallelism with loading large XML file with spark-xml?
我有一个中等大小的 xml 文件(200MB,bz2),我正在使用 spark-xml 在具有 1 个主节点和两个核心节点的 AWS emr 集群上加载它,每个节点有 8cpus和 32GB 内存。
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")
这个 load 需要相当长的时间,据我所知,只用一个分区就完成了。是否可以告诉 spark 在加载时对文件进行分区以更好地使用计算资源?我知道我可以加载后分区。
您可以重新分区以增加并行度:
experiment.repartition(200)
其中 200 是您要使用的执行程序的任何编号。
我有一个中等大小的 xml 文件(200MB,bz2),我正在使用 spark-xml 在具有 1 个主节点和两个核心节点的 AWS emr 集群上加载它,每个节点有 8cpus和 32GB 内存。
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")
这个 load 需要相当长的时间,据我所知,只用一个分区就完成了。是否可以告诉 spark 在加载时对文件进行分区以更好地使用计算资源?我知道我可以加载后分区。
您可以重新分区以增加并行度:
experiment.repartition(200)
其中 200 是您要使用的执行程序的任何编号。