为什么sparkDataframe重新分区不能正常工作

7nbnzgx9  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(256)

Spark1.6.2 hdp 2.5.2
我使用sparksql从一个配置单元表中获取数据,然后用100个分区对特定列“serial”重新分区,但是spark没有将数据重新分区为100个分区(在spark ui中可以看到任务数),而是有126个任务。

val data = sqlContext.sql("""select * from default.tbl_orc_zlib""")
val filteredData = data.filter( data("day").isNotNull ) // NULL check

//Repartition on serial column with 100 partitions
val repartData = filteredData.repartition(100,filteredData("serial")) 
val repartSortData = repartData.sortWithinPartitions("serial","linenr")

val mappedData = repartSortData.map(s => s.mkString("\t"))
val res = mappedData.pipe("xyz.dll")
res.saveAsTextFile("hdfs:///../../../")

但是如果我先使用合并,然后再重新分区,那么任务的数量将变为150(正确的合并为50,重新分区为100)

filteredData.coalesce(50)//works fine

有人能解释一下为什么会这样吗

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题