7

私は通常、.gz を使用して Spark でファイルを読み書きします。ファイルの数は、RDD パーティションの数と同じにする必要があります。つまり、1 つの巨大な .gz ファイルが 1 つのパーティションに読み込まれます。しかし、1 つの .bz2 を読み込んだ場合でも、1 つの巨大なパーティションを取得できますか? または、Spark は 1 つの .bz2 を複数のパーティションに自動的に分割することをサポートしますか?

また、Hadoop が 1 つの bz2 ファイルから読み取っている間、パーティションの数を知るにはどうすればよいですか。ありがとう!

4

2 に答える 2

9
    However, if I read in one single .bz2, would I still get one single giant partition?   
Or will Spark support automatic split one .bz2 to multiple partitions?

nファイルを読み取るパーティションを指定するbzip2と、Spark はnファイルを並列で読み取るタスクを生成します。のデフォルト値nは に設定されていsc.defaultParallelismます。パーティションの数は、textFile( docs ) の呼び出しの 2 番目の引数です。


. one giant .gz file will read in to a single partition.

いつでもできることに注意してください

sc.textFile(myGiantGzipFile).repartition(desiredNumberOfPartitions)

ファイルが読み取られた後、必要な数のパーティションを取得します。


Also, how do I know how many partitions it would be while Hadoop read in it from one bz2 file.

これはyourRDD.partitions.size、scala api または yourRDD.getNumPartitions()python api 用です。

于 2016-05-25T21:09:39.677 に答える