2017-06-28 5 views
1

sparkを使用して複数の計算を並行して実行できますか?それから利益を得ることができるどのようにスパークの垂直並列性を達成するには?

例例:

  • 大型の列の列方向のタスクを実行しています。 StringIndexerを10K列に適用すると、1人の作業者のみで計算し、できるだけ多くの作業者が単一の列で作業することで利益を得ることができます。
  • 小さなデータセットに対して多数の基本タスクを実行しています。

    in_pathため

    、long_ds_listでout_path:たとえば。 spark.read(in_path).select( '列'))(個別の書き込み(out_path)

私は最も近い同等物を考えることができます。 SparkR.lapply()または.Net Parallel.ForEach()が、より単純なマルチスレッドの場合よりもむしろクラスタ環境の場合に発生します。

答えて

1

私は、Sparkは分散コンピューティングタスクのスケジューリングに優れていると思いますが、簡単に処理することができますが、自分でソリューションを開発する必要があります。 Spark SQL、Spark MLlib、Structured Streamingなどの開発者向けAPIの下にいるので、年齢がかかるとは言いませんが、かなりの労力が必要です。

Spark Core APIを使用して、そのような計算を記述する方法を知るカスタムRDDを作成する必要があります。

最初のアイデアについてお話しましょう。

大きな列のタスクを実行します。 StringIndexerを10K列に適用すると、1人の作業者のみで計算し、できるだけ多くの作業者が単一の列で作業することで利益を得ることができます。

「大型の列の列方向のタスクは」あなたはスパークSQLのデータフレームを考えるとMLlibのStringIndexerトランススパークすることを示唆しているようです。このような機能を提供しない上位レベルのAPIです。あなたはそれらを使って問題に対処するつもりはありません。これは最適化機能なので、Sparkをより深く理解する必要があります。

Spark SQLとSpark MLlibの上位レベルのAPIを、独自の最適化されたカスタムコードを使用するように書き直す必要があると思います。

他の要件と同じですが、今度はSpark SQLのみに注意する必要があります(Spark MLlibは脇に置いておきます)。

ラッピングを行うと、両方の開発が可能であると考えられます(今日は利用できません)。

関連する問題