高端的金融行业网站开发,长沙市网站制作哪家好,文章响应式网站,怎么备案域名SparkSQL性能优化
1、设置shuffle过程中的并行度,可以通过spark.sql.shuffle.partitions设置shuffle并行度。#xff08;在SQLContext.setConf#xff08;#xff09;中设置#xff09;。
2、Hive数据仓库创建的时候#xff0c;合理设置数据类型#xff0c;比如设置成I…SparkSQL性能优化
1、设置shuffle过程中的并行度,可以通过spark.sql.shuffle.partitions设置shuffle并行度。在SQLContext.setConf中设置。
2、Hive数据仓库创建的时候合理设置数据类型比如设置成Int的就不需要设置成BIGINT减少数据类型的不必要开销。
3、SQL语句的优化尽量给出明确的列比如select name from table 不建议使用 select * from table.
4、并行的处理查询结果对于SparkSQL查询的结果如果数据量比较大比如超过1000条那么久不要使用collect到driver在处理使用foreach算法并行处开立查询结果。
5、缓存表。 对于一条SQL语句中可能多次使用到的表可以对其进行缓存使用SQLContext.cacheTable(TableName)或者DataFrame.cache即可SparkSQL会用内存列存储的格式进行表的缓存然后SparkSQL就可以仅仅扫描需要使用的列并且自动优化压缩来最小化内存的使用和GC的开销SQLContext.uncacheTable(tableName)可以将表从缓存中移除使用SQLContext.setConf()设置可以通过spark.sql.inMemoryColumnarStorage.batchSize这个参数默认10000配置列存储单位。
6、广播JOIN表spark.sql.autoBroadcastJoinThreshold默认1048576010M在内存够用的情况下增大其大小可以将join中的较小的表广播出去而不用进行网络数据传输。
7、钨丝计划spark.sql.tungsten.enabled。默认是true自动管理内存。
8、最有效的方法为:并行的处理查询结果,缓存表广播join表