2016-10-11 10 views
0

私が理解しているように、マップ関数から新しいRDDやDFを作成することはできません。これはスパークコンテキスト全体をエグゼキュータに試してみるためです。スパーク簡単操作を並列化

はのは、私は私のドライバで以下の擬似コードのいくつかを持っているとしましょう:まだ並行してこれらの操作を行う方法が

df1 = sc.readtextfiles(/1.txt) 
df2 = sc.readtextfiles(/2.txt) 
df3 = sc.readtextfiles(/3.txt) 

sc.write(DoSomeOperation(df1)) 
sc.write(df2.union(df3)) 

ありますか?それともドライバーはこれを逐次行う必要がありますか?

+0

スパークは、配布用RDD' 'に依存しているので、何をやることは、「コレクション様」でない場合は、並列化のためのもう一つの特徴/ライブラリを使用する必要があります。あなたの場合、2つのスパーク・ジョブのスケジューリングがうまくいくように思えます。スパーク・ドライバーが通信する必要はないからです。 – Wilmerton

+0

例として、実行の順序が問題となる可能性のあるファイルの名前に基づいた操作を行います。 – Havnar

+0

しかし、異なるファイルに対する操作は非同期で行うことができますか?次に、ファイル名に基づいてメインのScalaプログラムからスパークジョブをスケジュールすることができます。もっと経験豊富なScala開発者が答えなければなりません。私はSparkで仕事が論理を妨害しないという事実があると思う。 – Wilmerton

答えて

0

これはあなたのやりたいことですか?

val fileNames = Array("/1.txt", "/2.txt", "/3.txt").parallelize() 
val result = fileNames.map(data -> DoSomeOperation(data)) 
result.saveAsTextFile("/path/to/output.txt") 
+0

それは依存する...答えはノーだろう。 'DoSomeOperation'メソッドに' sc.readTextfile(data) 'がある場合を除きます。答えは「はい」です。 – Havnar

+0

@Havnarもちろん、私の悪い。 map(data - > DoSomeOperation(data)) 'は、' 'val result = fileNames.map(names - > sc.readTextFile(names) –

関連する問題