2016-11-13 3 views
0

私は初めて気づきましたが、開発者が並列性に気づく必要があるかどうかはまだ分かりません。開発者にとって透明ですか?私の問題は次のとおりです。 多数の大きなファイルからレコードを(都市IDとタイムスタンプで)ソートする必要があり、ループ内のソートされたレコードを繰り返し処理して特定の計算を行う必要があります。同じ都市のレコードの順番(タイムスタンプ別)が私の計算にとって重要なので、私はグループではできません。私は火花の中でこれをどうやって行うことができますか?
RDDを使用して反復処理を行うということは、データセット全体を必要とし、データが同じマシンに収まらないため、すべてを1台のマシンで処理することを意味します。そうですか?
私はRDDについて多くのことを読んでいますが、データが同じマシン、同じRDDに収まらない場合や、同じループ内のすべてのデータを繰り返し処理したい場合は、この部分が欠けています。何かを制御する必要はありますか?クラスタ全体に1つのループを持たせる方法はありますか?一般に巨大なファイルがソートしてデータセット全体を繰り返し処理します

答えて

0

  • 計算は完全に連続的である場合(レコードをループ)スパークは、任意の利点を提供しないであろう。ここで

(順番は都市によって定義されたグループ内の唯一の重要な場合):都市別

  • パーティションデータ
  • 日付別
  • ソート
  • は、各パーティション上の順次計算を実行
+0

ありがとう、そうです、注文は都市によってのみ重要であり、あなたの解決策は私が必要とするものです。日付枠やRDDを使用する必要があるかどうか教えてください。その選択肢の根拠は何ですか?また、cityIDでパーティションを分割する方法は?スパークが完全にシーケンシャルな状況に役立たないことを明確にしていただきありがとうございます。 – user1041035

+0

これは条件によって異なります。複雑な条件の場合はおそらくRDD。 '(city、date)'をキーとしてカスタムパーティショナーを使うことができます(SOの例があります)。簡単なことでは、 'DataFrame'とウィンドウ関数で十分です。 –

+0

ありがとうございました!あなたの答えからそんなに学んだ。 – user1041035

関連する問題