Spark SQL项目中的优化思路

存储格式的选择:
 
采取行式还是列式存储?
列存储写入时次数多,损耗时间多
反过来查询的时候较快
 
 
压缩格式的选择:
 
考虑压缩速度和压缩文件的分割性
压缩能够较少存储空间、提高数据传输速度
 
Spark中默认的压缩格式是“snappy”
 
 
代码的优化:
 
选择的高性能的算子:
foreachPartition  => partitionOfRecords.foreach 获得每一条数据
分区的好处是把partition所有的数据先保存到list当中去,然后我们在插入MySQL的时候就可以结合pstmt的批处理,一次过把整个分区数据写进去 
 
复用已有的数据:
在项目中,如果同时实现多个功能(本例中就是有三个),在计算时观察每个功能间是否有重叠产生的数据,若有的话把相应的数据提取出来生成,所有的功能实现都能共用(相当于做一个缓存,把中间数据cache )
 
 
参数的优化:
 
并行度:spark.sql.shuffle.partitions
默认的是200,配置的是partitions的数量,对应了task的数量
若觉得运行得太慢,则需要吧这个值调大
在conf里面改(YARN启动时)
 
分区字段类型推测:spark.sql.sources.partitionColumnTypeInference.enabled
默认为开启,若开启之后系统就会自动推测分区字段的类型
关闭后能提升性能

转载于:https://www.cnblogs.com/kinghey-java-ljx/p/8544101.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值