Spark Streaming + Kafka Integration Guide 位置策略和消费策略

新的Kafka消费者API可以预获取消息缓存到缓冲区,因此Spark整合Kafka让消费者在executor上进行缓存对性能是非常有助的,可以调度消费者所在主机位置的分区。

 LocationStrategies.PreferConsistent:这个策略会将分区分布到所有可获得的executor上。

 LocationStrategies.PreferBrokers:如果你的executor和kafkabroker在同一主机上的话,可以使用PreferBrokers,这样kafka leader会为此分区进行调度。

 LocationStrategies.PreferFixed: 如果你加载数据有倾斜的话可以使用PreferFixed,这将允许你制定一个分区和主机的映射(没有指定的分区将使用PreferConsistent 策略)

消费者默认缓存大小是64,如果你期望处理较大的Kafka分区的话,你可以使用spark.streaming.kafka.consumer.cache.maxCapacity设置大小。缓存是使用key为topicpartition 和组id的,因此对于每一次调用createDirectStream可以使用不同的group.id


ConsumerStrategies(消费策略)

新的kafka消费者API有一些不同的指定topic的方式,其中一些方式需要实例化对象之后进行大量的配置,ConsumerStrategies 提供了一个抽象允许Spark为consumer获取适合的配置,甚至在checkpoint重启之后也可以获取适合的配置。

ConsumerStrategies.Subscribe正如上面所述,你可以使用它去订阅一个topics集合,SubscribePattern可以定于匹配表达式的topics。注意:0.10.0的整合不像0.8的整合,使用 Subscribe 或SubscribePattern 会在运行流时候添加分区。最后,Assign可以指定一个分区的集合,这三种策略有重载构造函数,允许你指定分区和对应的偏移。

 如果上面配置之后的consumer仍然无法满足你的需求的话,ConsumerStrategy 是一个public ckass,你可以继承并进行定义。

你可能感兴趣的:(Spark Streaming + Kafka Integration Guide 位置策略和消费策略)