SparkStreaming每次读取Kafka数据量的问题
假设:
-
我们的Sparkt window窗口设置10s(10s拉取一次kafka数据)
-
Kafka的Partition有3个
-
maxRatePerPartition设置为5000
那么Spark每次拉取的数据为 10s * 3 * 5000 = 150000 条
我们知道使用SparkStreaming的Direct模式消费的话,我们Spark的并行度就是由Kafka的Partition决定的,本示例中有3个Partition
,则会启动3个Executor去同时消费对应拉取Kafka的数据。这样,则每个Executor则会拉取50000条数据去处理
。
至于怎样合理的设置maxRatePerPartition参数以及窗口大小则需要根据业务复杂度去计算消费能力怎么样,有没有数据积压等等。