课程表

Spark 基础

Spark RDDs

Spark Streaming

Spark SQL

GraphX编程指南

工具箱
速查手册

Spark SQL性能调优

当前位置:免费教程 » 数据库/运维 » Spark

对于某些工作负载,可以在通过在内存中缓存数据或者打开一些实验选项来提高性能。

在内存中缓存数据

Spark SQL可以通过调用sqlContext.cacheTable("tableName")方法来缓存使用柱状格式的表。然后,Spark将会仅仅浏览需要的列并且自动地压缩数据以减少内存的使用以及垃圾回收的压力。你可以通过调用sqlContext.uncacheTable("tableName")方法在内存中删除表。

注意,如果你调用schemaRDD.cache()而不是sqlContext.cacheTable(...),表将不会用柱状格式来缓存。在这种情况下,sqlContext.cacheTable(...)是强烈推荐的用法。

可以在SQLContext上使用setConf方法或者在用SQL时运行SET key=value命令来配置内存缓存。

Property NameDefaultMeaning
spark.sql.inMemoryColumnarStorage.compressedtrue当设置为true时,Spark SQL将为基于数据统计信息的每列自动选择一个压缩算法。
spark.sql.inMemoryColumnarStorage.batchSize10000柱状缓存的批数据大小。更大的批数据可以提高内存的利用率以及压缩效率,但有OOMs的风险

其它的配置选项

以下的选项也可以用来调整查询执行的性能。有可能这些选项会在以后的版本中弃用,这是因为更多的优化会自动执行。

Property NameDefaultMeaning
spark.sql.autoBroadcastJoinThreshold10485760(10m)配置一个表的最大大小(byte)。当执行join操作时,这个表将会广播到所有的worker节点。可以将值设置为-1来禁用广播。注意,目前的统计数据只支持Hive Metastore表,命令ANALYZE TABLE <tableName> COMPUTE STATISTICS noscan已经在这个表中运行。
spark.sql.codegenfalse当为true时,特定查询中的表达式求值的代码将会在运行时动态生成。对于一些拥有复杂表达式的查询,此选项可导致显著速度提升。然而,对于简单的查询,这个选项会减慢查询的执行
spark.sql.shuffle.partitions200配置join或者聚合操作shuffle数据时分区的数量
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号