Spark 1.6.2 HDP 2.5.2
我使用spark sql从hive表中获取数据,然后在具有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:///../../../")
但是如果我首先使用coalesce然后重新分区,则任务数量变为150(正确的50个coalesce和100个重新分区)
filteredData.coalesce(50)//works fine
有人可以解释一下为什么会发生这种情况