如何在Spark 2中启用Tungsten优化?

时间:2017-04-19 19:42:58

标签: apache-spark pyspark apache-spark-sql apache-spark-2.0

我刚刚使用hive支持构建Spark 2,并使用Hortonworks 2.3.4将其部署到集群。但是我发现这个Spark 2.0.3比HDP 2.3附带的标准spark 1.5.3慢。

当我检查explain时,似乎我的Spark 2.0.3没有使用钨。我是否需要创建特殊版本才能启用Tungsten?

Spark 1.5.3解释

== Physical Plan ==
TungstenAggregate(key=[id#2], functions=[], output=[id#2])
TungstenExchange hashpartitioning(id#2)
TungstenAggregate(key=[id#2], functions=[], output=[id#2])
HiveTableScan [id#2], (MetastoreRelation default, testing, None)

Spark 2.0.3

== Physical Plan ==
*HashAggregate(keys=[id#2481], functions=[])
  +- Exchange hashpartitioning(id#2481, 72)
  +- *HashAggregate(keys=[id#2481], functions=[])
  +- HiveTableScan [id#2481], MetastoreRelation default, testing

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

我认为默认情况下已启用,但您可以设置spark.sql.tungsten.enabled=true

答案 2 :(得分:1)

方法前面的星号表示WholeStageCodeGen用于这些任务。这是Spark2对原始钨优化的演变。 如果你看到星号,那就意味着,正在使用Spark2最优化的代码。 如果它(显着)比以前运行得慢,我会假设您的两个测试环境之间存在配置差异。