1、Spark Streaming第一次運行不丟失數據
kafka參數 auto.offset.reset 參數設置成earliest 從最初始偏移量開始消費數據。
2、Spark Streaming精准一次消費
- 手動維護偏移量
- 處理完業務數據后,再進行提交偏移量操作
- 極端情況下,如在提交偏移量時斷網或者停電會造成spark程序第二次啟動時重復消費問題,所以在涉及到金額或者精確性非常高的場景會使用事務保證精確一次消費。下級數據庫需支持事務
3、Spark Streaming控制每秒消費數據的速度
通過spark.streaming.kafka.maxRatePerPartition參數來設置Spark Streaming從kafka每分區每秒拉取的條數。比如10個分區,每個分區每秒最多拉去1000條。則每秒最高拉去10000條數據。
4、spark streaming背壓機制
把spark.streaming.backpressure.enabled 參數設置為ture,開啟背壓機制后Spark Streaming會根據延遲動態去kafka消費數據,上限由spark.streaming.kafka.maxRatePerPartition參數控制,
所以兩個參數一般會一起使用。
5、spark streaming優雅關閉
把spark.streaming.stopGracefullyOnShutdown參數設置成ture,Spark會在JVM關閉時正常關閉StreamingContext,而不是立馬關閉
Kill 命令:yarn application -kill 后面跟 applicationid
