zoukankan      html  css  js  c++  java
  • spark.sql.shuffle.partitions到底影响什么

    在运行Spark sql作业时,我们经常会看到一个参数就是spark.sql.shuffle.partitions,而且默认值是200.这个参数到底影响了什么呢?今天咱们就梳理一下。
    1、Spark Sql中的Shuffle partitions
    在Spark中的Shuffle partitions是与普通的分区不同的。我们可以通过两个例子来验证
    普通分区
    val df = sparkSession.read.csv("src/main/resources/sales.csv") println(df.rdd.partitions.length)
    执行代码后我们会发现这是2个文件,也就是对应有两个分区
    println(df.groupBy("_c0").count().rdd.partitions.length)
    这个打印结果是多少呢?
    打印结果是200,也就是分区从2增长到了200;

    原因就是dataframe中shuffle partitions的数量是由spark.sql.shuffle.partitions控制,默认值就是200.
    2、spark.sql.shuffle.partitions 是否需要调整大小?
    shuffle partitions的数量默认为200,是否需要调整呢?注意这个参数是需要进行调整的而且Spark中并不会根据数据量进行动态的设置,需要我们基于数据规模进行调整。
    > 小数据集,200数值显然有些大,大部分时间都花费在调度,任务执行本身花费时间较小
    > 大数据集,200数值有些小,不能充分利用集群资源
    合理的数值应该是多少呢?
    建议:建议设置初始分区的1.5-2倍之间
    更改方式
    sparkSession.conf.set("spark.sql.shuffle.partitions",100) println(df.groupBy("_c0").count().rdd.partitions.length)

  • 相关阅读:
    容斥相关
    动态点分治
    杜教筛
    上下界网络流的理解
    putty securecrt
    借款费用
    在线画图工具
    费用包括(营业成本)和(期间费用)
    信用减值损失
    采用权益法核算的长期股权投资,被投资单位宣告发放现金股利
  • 原文地址:https://www.cnblogs.com/kukudetent/p/14102372.html
Copyright © 2011-2022 走看看