2016-07-06 17 views

答えて

4

Apache Spark StreamingのStreamsets Data Collector(SDC)からのデータを処理する最善の方法は、データをKafkaトピックに書き込んでそこからデータを読み取ることです。これにより、Spark StreamingをSDCから分離することができるため、両方とも独自の処理速度で処理を進めることができます。

スパークストリーミングマイクロバッチが時間によって指示される間、SDCマイクロバッチは記録カウントが定義されます。つまり、各SDCバッチはSparkストリーミングバッチに対応していない可能性があります(おそらく、Sparkストリーミングバッチは複数のSDCバッチのデータを持つ可能性が高い)。 SDCは、一度送信先に送信されると、各バッチを「コミット」します.Spark Streamingに書き込まれたバッチは、各SDCバッチがデータ損失を避けるためにSpark Streamingバッチに対応する必要があります。 Spark Streamingは、処理またはノードの障害により、すでにコミット済のバッチを「再処理する」こともできます。 SDCはコミットされたバッチを再処理できません。このような状況から復旧するには、バッチを再処理できるKafkaのようなものに書き込む必要があります。したがって、SDCからSpark Streamingに書き込む直接コネクタを持つことは複雑であり、データ損失の問題が発生する可能性があります。

簡潔に言えば、SDC - > Kafka - > Spark Streamingが最適です。

関連する問題