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
    默认为开启,若开启之后系统就会自动推测分区字段的类型
    关闭后能提升性能
  • 相关阅读:
    104.Maximum Depth of Binary Tree
    103.Binary Tree Zigzag Level Order Traversal
    102.Binary Tree Level Order Traversal
    101.Symmetric Tree
    100.Same Tree
    99.Recover Binary Search Tree
    98.Validate Binary Search Tree
    97.Interleaving String
    static静态初始化块
    serialVersionUID作用
  • 原文地址:https://www.cnblogs.com/kinghey-java-ljx/p/8544101.html
Copyright © 2011-2022 走看看