scala - 如何提高使用 Spark-xml 加载大型 XML 文件的并行度?

标签 scala performance apache-spark bz2

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

最佳答案

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

experiment.repartition(200)

其中 200 是您要使用的执行程序的编号。

参见repartition

关于scala - 如何提高使用 Spark-xml 加载大型 XML 文件的并行度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48817169/

相关文章:

apache-spark - Spark Scala - 如何对数据帧行进行分组并将复杂函数应用于组?

android - Android Profile GPU渲染中的红色和黄色单杠是什么意思

在 where 子句中添加 'or' 后 MySql 性能变慢

mysql - mysql中统计查询优化

apache-spark - Spark - sortWithInPartitions 排序

scala - 为什么 Scala 2.11.2 会给我科学记数法 float 的编译错误?

scalatest 调用不带括号

scala集合函数不同的调用方式

scala - 未找到 Intellij Scala 类路径

apache-spark - 无法使用SparkSQL在Hive中写入数据