我一般使用.gz在Spark中读写文件,文件数应该和RDD分区数一样。 IE。一个巨大的 .gz 文件将读入单个分区。但是,如果我读入一个 .bz2,我还会得到一个巨大的分区吗?或者 Spark 是否支持将一个 .bz2 自动拆分为多个分区?
另外,我怎么知道当 Hadoop 从一个 bz2 文件读入它时会有多少个分区。谢谢!
最佳答案
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
.那将是
yourRDD.partitions.size
对于 Scala api 或 yourRDD.getNumPartitions()
对于python api。
关于apache-spark - Spark : difference when read in . gz 和 .bz2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37445054/