Spark SQL中的钨编码?

时间:2018-08-16 06:10:36

标签: apache-spark apache-spark-sql

我正在运行一个Spark应用程序,该应用程序具有一系列一个又一个地执行的Spark SQL语句。 SQL查询非常复杂,应用程序正在运行(生成输出)。这些天来,我正在努力提高Spark内处理的性能。

请建议在运行Spark SQL时是否必须单独启用钨编码或自动启动钨编码?

我正在为集群(2个节点)使用Cloudera 5.13。

2 个答案:

答案 0 :(得分:2)

默认情况下,它在spark 2.X中启用(也许在1.6中启用:但是我不确定)。

在任何情况下您都可以这样做

 spark.sql.tungsten.enabled=true

可以在spark-submit上启用它,如下所示:

spark-submit  --conf spark.sql.tungsten.enabled=true
如果在计划旁边看到Tungsten,应启用

*

enter image description here

另请参阅:How to enable Tungsten optimization in Spark 2?

答案 1 :(得分:1)

钨丝成为 Spark 1.5 中的默认设置,并且可以通过设置 spark.sql.tungsten.enabled = true 在更早的版本中启用。 >。 即使没有钨丝,SparkSQL也会使用带有Kyro序列化的列式存储格式来最大程度地降低存储成本。

为确保您的代码从Tungsten优化中获得最大利益,请尝试将默认的Dataset API与Scala一起使用(而不是RDD)。

数据集结合了关系型(DataFrame)和功能型(RDD)转换,将两全其美。 DataSet API 是最新的,并添加了类型安全性以及更好的错误处理和更易读的单元测试。