2017-05-27 8 views
0

次の行は、RDDまたは複数のRDDを1つ作成しますか?複数のRDDとパーティションの分割?

val textFile = sc.textFile("README.txt") 

私の理解は、各partitionは、さらに、同じ/異なるノード上で処理することができる複数partitions(デフォルトでは、各partition 128のMB)を有する単一RDDを作成することです。 Sparkにsingleの代わりにmutilple RDDを作成することができますか?はいの場合は賛否両論ありますか?

+0

1つではなく複数のRDDが必要なのはなぜですか?それの利点は何だと思いますか? – eliasah

+0

これは私の質問ですか?デフォルトでは常に1つのrddを作成します。いずれのシナリオでもこの動作を変更する必要がありますか? –

+0

さて、通常はフレームワークで扱うデータを明示的に分割する必要はありませんが、場合によっては、例ごとに歪んだデータがある場合にカスタムパーティショナーを使用する必要があります。通信は非常に高価なので、ネットワークトラフィックを最小限に抑えるためにデータをレイアウトすると、パフォーマンスが大幅に向上します。残念ながら、それはすべて非常に退屈で広範囲です。 – eliasah

答えて

0

あなたがval textFile = sc.textFile("README.txt")

を使用してファイルを読み込むときにスパークが(あなたによって制御することができるか、基本となるデータソースによって決定される)1つまたは複数のパーティションを持つ単一RDDを作成すると言うとき、あなたは正しいですこのように考えてみましょう。特定のデータソースは1つのRDDに対応し、並列度は特定のRDDのパーティション数によって決まります。 別のデータソースで作業する場合は、同じSparkコンテキスト内で別のRDDを作成することができます。 同じデータソースから複数のRDDを作成しようとすると、ほとんどの場合完全に不要になります。

+0

並列性とパーティションの違いは何ですか? –

+0

@RameshMaharjanすべてのパーティションは、個々のCPUコアによって処理されます。 1つのパーティション=> 1つのコアのみが利用されます。複数のパーティション=>同じジョブに使用される複数のコア。したがって、パーティションは処理ジョブの並列度を決定します。 https://stackoverflow.com/a/35804407/3960021 – septra

+0

はい、間違いありません。ありがとう。私はちょうど私がdownvoteを持っているように私が私の答えで正しいと説明していることを確認したかった。ありがとう –

関連する問題