【发布时间】:2016-10-13 10:18:39
【问题描述】:
我有一个长期运行的 Spark 流作业,它使用 16 个执行器,每个执行器只有一个核心。
我使用默认分区器(HashPartitioner)将数据平均分配到 16 个分区。在updateStateByKeyfunction 内部,我从TaskContext.getPartitionId() 中检查了多个批次的分区ID,发现执行程序的分区ID 非常一致,但长时间运行后仍会更改为另一个ID。
我打算做一些优化来激发“updateStateByKey”API,但是如果partition-id在批次之间不断变化,就无法实现。
那么 Spark 什么时候改变执行器的 partition-id 呢?
【问题讨论】:
-
getPartitionId不是执行者的 id。它是给定 RDD 中分区的 ID。 -
我所说的分区ID是由特定执行器处理的分区ID,我想知道执行器何时更改它一直在处理的分区ID。
标签: apache-spark spark-streaming