1000次元空間に200,000ポイントあります。S3のファイルからAmazon EMR/Sparkを使用して並列クラスタリングを実行する方法
sc.textFileを使用してこれらのポイントをすべて読み込み、各ポイント間の距離を徹底的に計算した場合、どのように並列化できますか? Sparkは自動的に私の仕事を並列化しますか?
1000次元空間に200,000ポイントあります。S3のファイルからAmazon EMR/Sparkを使用して並列クラスタリングを実行する方法
sc.textFileを使用してこれらのポイントをすべて読み込み、各ポイント間の距離を徹底的に計算した場合、どのように並列化できますか? Sparkは自動的に私の仕事を並列化しますか?
はい、Sparkは、正しく使用すると自動的に並列化します。 Here's the spark introduction guideをご利用ください。
あなたのユースケースには、本当にすべての点の間の距離を計算していますか? 400億の数値を計算するとかなり高価になります。本当にこれをやりたければ、入力データのすべてのペアのRDD(たとえば400億)を返すデカルト関数を使いたいと思うでしょう。次に、マップ関数を使って各ペアの距離を計算することができます。
いいえ、これは本当の問題ではありません。私はパラレル化できる問題を考えています。 –
ワークを並列化するために、分散フレームワークでは、各レコード(または行)を他のすべてのレコードとは独立して処理できるという前提があります。これが真でない場合は、それが真であるようにデータを修正する必要があります。あなたの例では、200kポイントのデータフレームを持つ出発点を考えてみましょう。 1つのレコード(または1つのポイント)で距離を見つけることはできません。したがって、このデータフレームをすべての可能な点のペアを含む40Bの行に分解する必要があります。次に、他のすべての行とは独立して各行を処理することができます。 – David
良いアルゴリズムは、ペアワイズドディスタンスを避けるでしょう。 –