1. createStream會使用 Receiver;而createDirectStream不會,數(shù)據(jù)會通過driver接收腥例。
2.createStream使用 Receiver 源源不斷的接收數(shù)據(jù)并把數(shù)據(jù)交給 ReceiverSupervisor 處理最終存儲為 blocks 作為 RDD 的輸入抹剩,從 kafka 拉取數(shù)據(jù)與計算消費數(shù)據(jù)相互獨立布持;而createDirectStream會在每個 batch 拉取數(shù)據(jù)并就地消費余境,到下個 batch 再次拉取消費庶骄,周而復(fù)始毁渗,從 kafka 拉取數(shù)據(jù)與計算消費數(shù)據(jù)是連續(xù)的,沒有獨立開
createStream 一般是一個inputstreaming 對應(yīng)一個receiver单刁,receiver其實就是一個消費者進程灸异,你可以設(shè)置多個線程來消費,或者create多個inputstreaming 最后union就行羔飞。
3.createStream中創(chuàng)建的KafkaInputDStream 每個 batch 所對應(yīng)的 RDD 的 partition 不與 Kafka partition 一一對應(yīng)肺樟;而createDirectStream中創(chuàng)建的 DirectKafkaInputDStream 每個 batch 所對應(yīng)的 RDD 的 partition 與 Kafka partition 一一對應(yīng)。