无法在有状态的Spark结构化流应用程序中更改“ spark.sql.shuffle.partitions”

时间:2018-08-02 05:57:08

标签: apache-spark spark-structured-streaming

我有一个有状态(带有flagMapGroupsWithState)的Spark结构化流应用程序。

根据当前的spark设计,似乎无法在应用程序启动后更改'spark.sql.shuffle.partitions'-除非我停止应用程序,删除检查点数据(每个this answer),然后从clean重新启动-这是不可接受的,因为这样我会丢失存储在检查点中的所有中间状态。

如何在此限制下扩展我的应用程序而不会丢失数据?

假设我在spark.sql.shuffle.partitions = 10 nodes * 4 cores/node * 3 = 120的10个节点上启动了该应用程序,然后某个时候,我需要通过添加另外20个节点来扩展集群。

如果我不能将'spark.sql.shuffle.partitions'更改为更大的值,我根本想不出让spark利用新添加的节点的解决方案。 Spark仍会将数据集划分为120个分区,这意味着部分节点将处于空闲状态。

0 个答案:

没有答案