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

时间:2016-05-25 18:32:20

标签: apache-spark rdd gz bz2

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

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

2 个答案:

答案 0 :(得分:6)

    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。分区数是调用textFiledocs)的第二个参数。

. 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

scala api为yourRDD.partitions.size或python api为yourRDD.getNumPartitions()

答案 1 :(得分:2)

我不知道为什么我的测试程序要在一个执行程序上运行,经过一些测试,我想我就可以了,像这样:

通过pySpark

components