Kafkaトピックのデータを消費すると、FlinkとSparkStreamingの両方でauto.commit.enabled
がfalse
に設定されているチェックポイントメカニズムが提供されます。 スパーク・ドキュメント say:FlinkとSparkStreamingのチェックポイントメカニズムの相違点
スパーク出力操作は少なくとも1回です。したがって、正確に一度のセマンティクスに相当するものが必要な場合は、偶数の出力の後にオフセットを格納するか、アトミックなトランザクションに出力とともにオフセットを格納する必要があります。
しかしFLINKドキュメントは言う:FLINKのチェックポイントを有効にすると
が、FLINKカフカ消費者が一緒に他の操作の状態で、トピックからレコードを消費し、定期的にそのすべてのカフカオフセットをチェックポイントになります、一貫した方法でジョブが失敗した場合、Flinkは最新のチェックポイントの状態にストリーミングプログラムを復元し、チェックポイントに格納されたオフセットから開始して、カフカのレコードを再消費します。私はFLINKチェックポイントは、プログラムの状態を保存しますだけでなく、オフセットがかかるが、チェックポイントがちょうどセーブオフセットを消費し、そのせいでスパークスパーク推測する他のソースを読む
は言う:
スパーク出力操作は、です-少なくとも一回。
誰もが違いと、カフカのトピックからデータを読み取る際に正確に一度の意味に到達する方法を教えてください。
ありがとうございました。私は処理のセマンティクスで ''ちょうど ''と ''少なくとも一回 'を知っていましたが、私の質問は、スパークとフリンクでのチェックポイント機能の問題でした。 – soheil