我通常使用.gz在Spark中读写文件,其中文件的数量应与RDD分区的数量相同。即一个巨大的.gz文件将读入一个分区。但是,如果我在一个单独的.bz2中读取,我还能获得一个单独的巨型分区吗?或者Spark会支持将.bz2自动拆分为多个分区吗?
另外,我如何知道Hadoop从一个bz2文件读取它时会有多少个分区。谢谢!
答案 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
。分区数是调用textFile
(docs)的第二个参数。
. 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