【发布时间】:2020-09-05 03:39:18
【问题描述】:
我注意到在 spark-shell (spark 2.4.4) 中,当我执行简单的spark.read.format(xyz).load("a","b","c",...) 时,看起来 spark 使用单个 ipc 客户端(或“线程”)来加载文件 a、b、c , ... 依次(它们是 hdfs 的路径)。
这是预期的吗?
我问的原因是,就我而言,我正在尝试加载 50K 文件,而顺序加载需要很长时间。
谢谢
PS,我试图在源代码中看到它,但不确定这是不是这个: https://github.com/apache/spark/blob/branch-2.4/sql/core/src/main/scala/org/apache/spark/sql/DataFrameReader.scala#L180
【问题讨论】:
-
如果您使用 spark-shell - 默认情况下 spark-shell 使用单线程 & 因此它将仅通过单线程处理所有文件。 & 尝试运行 spark-shell --master yarn pass some executors & 检查它是加载顺序还是并行。
-
我记得 spark-shell 默认使用所有本地 cpu(在我的情况下为 48)。我还尝试了 --master yarn 多个执行器编号,它仍然是单线程。我的理解是,由于“加载”只是加载文件信息(而不是文件内容),所以 spark 只是使用一个线程。
标签: performance apache-spark file-io spark-shell