2016-12-06 4 views
1

はカフカ mapWithState/updateStateByKeyはキャッシュされていますか?

  • から新しいストリームを作成します。私は、アプリケーション

    1. を持っている、のと仮定しましょう状態を保存するためにいくつかの変換
    2. 使用mapWithState/updateStateByKeyを行います。
    3. ストリームを状態からさらに変換します。
    4. いくつかのアクション1とアクション2を実行します。

    注:まだキャッシュを使用していません。

    私の質問は、ステップ2の変換が(アクション1とアクション2ごとに1回)2回実行されますが、

    • のですか?私のために、それは一度だけ実行されているようだ!
    • mapWithState/updateStateByKey返信dStream、自動的にキャッシング/保存を行うのですか?
    • 保証はありますか?mapWithState/updateStateByKeyの前の変換は一度だけ適用され、再計算されませんか? 30日前に取得したデータがまだ状態に含まれている場合は、事前計算された結果が見つからない場合は再計算されますか?
  • 答えて

    1

    ステップ2の変換は、(アクション1 とアクション2毎に1回)2回実行されますか?私にとっては、一度だけ実行されているようです。

    これは実際に私たちが話している変革によって異なります。あなたがグラフの2つの枝を持っていて、それぞれがいくつかの計算を並行して実行しているなら、それはうまくいくはずです。

    mapWithState/updateStateByKey return dStreamですが、自動的にキャッシング/ストアするのは ですか?これらの変換の

    全体のポイントは、反復間で状態を維持することであり、それは彼らが何をすべきかです。 mapWithStateには、自分で追加/更新/削除する明示的なState[S]オブジェクトがあります。 mapWithState/updateStateByKey前

    保証はあり

    、変換は1回だけ適用していない 再計算されますか?私は状態はまだ前に30日 取得したデータが含まれている場合は、意味、事前に計算結果が mapWithStateupdateStateByKey以外

    すべての変換はステートレスで見つからない場合には、計算を再度します。 RDDが全体として必要なデータを欠いている場合は、RDDの欠けている部分を再計算するよう要求することができます。それがあなたが意味するものなら。

    関連する問題