zoukankan      html  css  js  c++  java
  • 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
    默认为开启,若开启之后系统就会自动推测分区字段的类型
    关闭后能提升性能
  • 相关阅读:
    基于jquery. cookie 防刷新重复点击获取验证码
    Mysql常用命令详解
    20种常用的DOS命令小结
    php 常用正则表达式
    VBA Excel 常用 自定义函数
    VBA Mysql 类
    VBA Excel 引用 API,以实现“透明”
    VBA Excel 打印
    VBA Excel 单元格操作
    php上传常见文件类型对应的$_FILES["file"]["type"](转)
  • 原文地址:https://www.cnblogs.com/kinghey-java-ljx/p/8544101.html
Copyright © 2011-2022 走看看