我尝试比较了Spark SQL的1.6版本和1.5版本的性能。在简单情况下,Spark 1.6比Spark 1.5更快。但是,在更复杂的查询中 - 比如我这里的一种包含分组集的聚合查询,Spark SQL 1.6要比Spark SQL 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" )
以下是您要翻译的内容:
这里有两张截图,Spark 1.5.2 和 Spark 1.6.0,都使用了 --driver-memory=1G 参数。在 Spark 1.6.0 上,可以查看 DAG 的信息,链接为 DAG。