我试图比较Spark SQL版本1.6和版本1.5的性能。在一个简单的例子中,Spark 1.6比Spark 1.5快得多。但是,在一个更复杂的查询中 - 在我的情况下,使用分组集的聚合查询,Spark SQL版本1.6比Spark SQL版本1.5慢得多。有人注意到同样的问题吗?甚至更好有这种查询的解决方案?Spark SQL性能:版本1.6和版本1.5
这是我的代码
case class Toto(
a: String = f"${(math.random*1e6).toLong}%06.0f",
b: String = f"${(math.random*1e6).toLong}%06.0f",
c: String = f"${(math.random*1e6).toLong}%06.0f",
n: Int = (math.random*1e3).toInt,
m: Double = (math.random*1e3))
val data = sc.parallelize(1 to 1e6.toInt).map(i => Toto())
val df: org.apache.spark.sql.DataFrame = sqlContext.createDataFrame(data)
df.registerTempTable("toto")
val sqlSelect = "SELECT a, b, COUNT(1) AS k1, COUNT(DISTINCT n) AS k2, SUM(m) AS k3"
val sqlGroupBy = "FROM toto GROUP BY a, b GROUPING SETS ((a,b),(a),(b))"
val sqlText = s"$sqlSelect $sqlGroupBy"
val rs1 = sqlContext.sql(sqlText)
rs1.saveAsParquetFile("rs1")
这里是2个截图Spark 1.5.2和Spark 1.6.0与--driver内存= 1G。 Spark 1.6.0上的DAG可以在DAG查看。
似乎它在1.6中洗牌的更多,你可以发布两个DAG吗? –
谢谢@SebastianPiu。您可以在[spark 1.5.2](http://i.stack.imgur.com/dLXiK.png)和[spark 1.6.0](http://i.stack.imgur)中看到带有空DAG的2个屏幕截图的.com/4oomU.png)。在其他情况下,Spark仍然正确显示DAG。 –
是的,可悲的是,这是一个错误,当铬更新时,所以不可能排除故障DAG :( –