1. 拉取數據的方式
Receiver採用kafka高級api,一次性拉取固定時間的數據後再進行處理,這可能造成一個問題:拉取的數據過多,放不下怎麼辦?
Direct採用kafka低級api,直接連接到kafka的分區,rdd中的分區與kafka中的分區是一一對應的,他是一邊拉取數據,一邊處理數據,到達設置的時間間隔後,就作爲一個批次進行計算結果。
2. 可靠性保證
Direct可以提供一次且緊一次語義。
Receiver要保證數據不丟失,需要WAL,提供至少一次的語義。
3. 高峯數據量過大的處理
Receiver方式只能手動設置最大接收速率,不能自動調節數據接收速率。
Direct可以使用反壓機制自動調節數據接收速率。