我正在运行一个Spark应用程序,该应用程序具有一系列一个又一个地执行的Spark SQL语句。 SQL查询非常复杂,应用程序正在运行(生成输出)。这些天来,我正在努力提高Spark内处理的性能。
请建议在运行Spark SQL时是否必须单独启用钨编码或自动启动钨编码?
我正在为集群(2个节点)使用Cloudera 5.13。
答案 0 :(得分:2)
默认情况下,它在spark 2.X中启用(也许在1.6中启用:但是我不确定)。
在任何情况下您都可以这样做
spark.sql.tungsten.enabled=true
可以在spark-submit上启用它,如下所示:
spark-submit --conf spark.sql.tungsten.enabled=true
如果在计划旁边看到Tungsten
,应启用 *
:
答案 1 :(得分:1)
钨丝成为 Spark 1.5 中的默认设置,并且可以通过设置 spark.sql.tungsten.enabled = true 在更早的版本中启用。 >。 即使没有钨丝,SparkSQL也会使用带有Kyro序列化的列式存储格式来最大程度地降低存储成本。
为确保您的代码从Tungsten优化中获得最大利益,请尝试将默认的Dataset API与Scala一起使用(而不是RDD)。
数据集结合了关系型(DataFrame)和功能型(RDD)转换,将两全其美。 DataSet API 是最新的,并添加了类型安全性以及更好的错误处理和更易读的单元测试。