7

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 を使用しています。

前もって感謝します。

4

1 に答える 1

7

プロパティ名のスペルが間違っていると思います。正しいキーはauto.reset.offestではなくauto.offset.reset です

詳細はこちら: http://kafka.apache.org/documentation.html#configuration

お役に立てれば。

于 2014-09-10T13:53:52.487 に答える