【发布时间】:2018-04-18 05:37:09
【问题描述】:
我利用Spark 的JDBC 功能如下:
- 将
MySQL表读入DataFrame - 改造他们
- 合并他们
- 写信给
HDFS
在DataFrame 的整个生命周期内,不会对其执行actions。它曾经按预期工作,但最近我遇到了问题。感谢Spark 的惰性评估,coalesce 导致读取操作的并行度降低。
因此,如果我使用DataFrameReader.jdbc(..numPartitions..) 和numPartitions=42 读取DataFrame,然后在写入之前将coalesce 读取到6 个partitions,那么它会以并发读取DataFrame > 仅 6 个(仅向 MySQL 发送 6 个查询)。我想重复一遍,它之前使用了 parallelism 为 42 的读取,然后执行 coalesce。
我最近在EMR 5.13 上迁移到Spark 2.3.0,这可能与此有关吗?有解决办法吗?
【问题讨论】:
标签: apache-spark