Spark ストリーミング アプリケーションは、Kafka からデータをフェッチし、それらを処理します。
アプリケーションに障害が発生した場合、大量のデータが Kafka に保存され、Spark Streaming アプリケーションの次の起動時に、一度に大量のデータが消費されてクラッシュします。私のアプリケーションは過去のデータを気にしないので、現在 (最新) のデータのみを使用してもまったく問題ありません。
「auto.reset.offest」オプションを見つけましたが、Spark では動作が少し異なります。設定されている場合、Zookeeper に保存されているオフセットを削除します。ただし、予期しない動作にもかかわらず、削除後に最新のものからデータを取得することになっています。
しかし、そうではないことがわかりました。データを消費する前に、すべてのオフセットがクリーンアップされるのを見ました。次に、デフォルトの動作により、期待どおりにデータを取得する必要があります。しかし、データが多すぎるためにクラッシュします。
オフセットをクリーンアップし、「Kafka-Console-Consumer」を使用して最新のデータを消費し、アプリケーションを実行すると、期待どおりに動作します。
そのため、「auto.reset.offset」が機能しないように見え、スパーク ストリーミングの kafka コンシューマーは、デフォルトで「最小」オフセットからデータを取得します。
最新の Spark ストリーミングから Kafka データを使用する方法について何か考えはありますか?
spark-1.0.0 と Kafka-2.10-0.8.1 を使用しています。
前もって感謝します。