使用SparkStreaming集成kafka时有几个比较重要的参数:
spark.streaming.stopGracefullyOnShutdown (true / false)默认fasle
确保在kill任务时,能够处理完最后一批数据,再关闭程序,不会发生强制kill导致数据处理中断,没处理完的数据丢失
spark.streaming.backpressure.enabled (true / false) 默认false
开启后spark自动根据系统负载选择最优消费速率
spark.streaming.backpressure.initialRate (整数)
默认直接读取所有 在(2)开启的情况下,限制第一次批处理应该消费的数据,因为程序冷启动队列里面有大量积压,防止第一次全部读取,造成系统阻塞
spark.streaming.kafka.maxRatePerPartition (整数)
默认直接读取所有限制每秒每个消费线程读取每个kafka分区最大的数据量
1 因为首次启动JOB的时候,由于冷启动会造成内存使用太大,为了防止这种情况出现,限制首次处理的数据量
spark.streaming.backpressure.initialRate=10000
2 streaming启动后处理kafka中积压的数据且越来越多,积压时间越来越长,为防止executor OOM
spark.streaming.backpressure.enabled=true
开启后spark自动根据系统负载选择最优消费速率