我刚刚使用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
答案 0 :(得分:3)
它仍然使用Tungsten,类重命名为:https://github.com/apache/spark/commit/8900c8d8ff1614b5ec5a2ce213832fa13462b4d4
答案 1 :(得分:1)
我认为默认情况下已启用,但您可以设置spark.sql.tungsten.enabled=true
答案 2 :(得分:1)
方法前面的星号表示WholeStageCodeGen用于这些任务。这是Spark2对原始钨优化的演变。 如果你看到星号,那就意味着,正在使用Spark2最优化的代码。 如果它(显着)比以前运行得慢,我会假设您的两个测试环境之间存在配置差异。