この質問があまりにも基本的であれば、私はSparkを初めて勉強しています。 私は、データがキューに連続的にプッシュされ、このデータに対して分析を実行する必要があるリアルタイムのシナリオを持っています。 Sparkがこのデータをキューから取得します。分析はマルチステージであり、RDDはすべてのステージからの中間更新を繰り返し繰り返し、最後にRDD自体で更新されるマッピングを取得します。 分析はn分ごとに繰り返す必要があり、前回のRDD +の新しいデータの状態でも機能するはずです。これらのジョブは常に順番に実行され、前のジョブが完了するまで次のジョブは実行されません。スパークRDDを複数の繰り返しにわたって使用する
実行時に外部ストレージまたはキャッシュにデータを投稿してから、次のサイクルでRDDに再度データを入力することはできますが、不必要なオーバーヘッドが発生し、パフォーマンスが低下します。
このシナリオに最適なアプローチを提案してください。キャッシュまたは永続RDDがソリューションですか? Sparkのキャッシュ/永続性の仕組みがわかりません。ローカルであるか、すべてのノードで使用可能か。理想的なシナリオは、すべてのノードがそのデータ・チャンクを保持し、次の反復のために処理が実質的に遅れないことです。
「Plain spark」と言えば、他にどのようなオプションがありますか?私はあなたが点火などについて話していると思う。私はストリーミングとウィンドウ操作を見ていたが、それはカウンタなどを更新するのには良いが、私のシナリオでは十分だとは思わない。一度それを探検し、戻ってくるだろう。 – Piyush
明確にするために私の答えを編集しました – JavierC
ご清聴ありがとうございます。私はあなたの意見を持っています。私は間違った方法でスパークを使用していると思う。私のアプリケーションはほぼリアルタイムであり、5分ごとにバッチを実行し、シナリオはストリームに蓄積されたレコードがあれば5分後に前回のデータの最後の状態を使用する必要があります。私はデータを保存して検索することができますが、これらのジョブを継続的に実行しているので、コストがかかるでしょう。 – Piyush