Spark:在.gz和.bz2中读取时的差异

Eda*_*ame 5 gzip apache-spark rdd bz2

我通常使用.gz在Spark中读写文件,其中文件的数量应与RDD分区的数量相同.即一个巨大的.gz文件将读入单个分区.但是,如果我在一个单独的.bz2中读取,我还能获得一个单独的巨型分区吗?或者Spark会支持将.bz2自动拆分为多个分区吗?

另外,我如何知道Hadoop从一个bz2文件读取它时会有多少个分区.谢谢!

axi*_*iom 8

    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?
Run Code Online (Sandbox Code Playgroud)

如果指定n分区来读取bzip2文件,Spark将生成n任务以并行读取文件.默认值n设置为sc.defaultParallelism.分区数是调用textFile(docs)的第二个参数.


. one giant .gz file will read in to a single partition.
Run Code Online (Sandbox Code Playgroud)

请注意,您可以随时进行

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.sizescala api或 yourRDD.getNumPartitions()python api.