【发布时间】:2017-04-17 06:16:07
【问题描述】:
我有一个四节点 hadoop 集群(mapr),每个集群有 40GB 内存。我的spark启动参数如下:
MASTER="yarn-client" /opt/mapr/spark/spark-1.6.1/bin/pyspark --num-executors 8 --executor-memory 10g --executor-cores 5 --driver-memory 20g --driver-cores 10 --conf spark.driver.maxResultSize="0" --conf spark.default.parallelism="100"
现在,当我使用 10 万条记录运行我的 spark 作业并运行 results.count() 或 result.saveTable() 时,它会在所有 8 个执行程序上运行。但是,如果我使用 1M 条记录运行作业,则作业将分为 3 个阶段,最后阶段仅在一个执行器上运行。它与分区有关吗?
【问题讨论】:
-
最后阶段是计数,还是 saveTable,还是别的什么?
-
result.count()情况下Count,result.SaveTable()情况下SaveTable
-
看起来像数据倾斜问题,您是否使用任何键/值对?
标签: apache-spark pyspark