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
有人能解释一下为什么会这样吗
暂无答案!
目前还没有任何答案,快来回答吧!