zoukankan      html  css  js  c++  java
  • Spark SQL : DataFrame repartition、coalesce 对比

    repartition

     repartition 有三个重载的函数:

    1) def repartition(numPartitions: Int): DataFrame

    /**
       * Returns a new [[DataFrame]] that has exactly `numPartitions` partitions.
       * @group dfops
       * @since 1.3.0
       */
      def repartition(numPartitions: Int): DataFrame = withPlan {
        Repartition(numPartitions, shuffle = true, logicalPlan)
      }

    此方法返回一个新的[[DataFrame]],该[[DataFrame]]具有确切的 'numpartition' 分区

    2) def repartition(partitionExprs: Column*): DataFrame 

      @scala.annotation.varargs
      def repartition(partitionExprs: Column*): DataFrame = withPlan {
        RepartitionByExpression(partitionExprs.map(_.expr), logicalPlan, numPartitions = None)
      }

     此方法返回一个新的[[DataFrame]]分区,它由保留现有分区数量的给定分区表达式划分,分区数量由 spark.sql.shuffle.partition 决定。得到的DataFrame是哈希分区的。

    这与SQL (Hive QL)中的“distribution BY”操作相同。

    3) def repartition(numPartitions: Int, partitionExprs: Column*): DataFrame

    @scala.annotation.varargs
      def repartition(numPartitions: Int, partitionExprs: Column*): DataFrame = withPlan {
        RepartitionByExpression(partitionExprs.map(_.expr), logicalPlan, Some(numPartitions))
      }

    此方法返回一个新的[[DataFrame]],由给定的分区表达式划分为 'numpartition' 。得到的DataFrame是哈希分区的。

    这与SQL (Hive QL)中的“distribution BY”操作相同。

    coalesce

     1) coalesce(numPartitions: Int): DataFrame

      def coalesce(numPartitions: Int): DataFrame = withPlan {
        Repartition(numPartitions, shuffle = false, logicalPlan)
      }

     返回一个新的[[DataFrame]],该[[DataFrame]]具有确切的 'numpartition' 分区。类似于在[[RDD]]上定义的coalesce,这种操作会导致一个狭窄的依赖关系,例如:

    如果从1000个分区到100个分区,就不会出现shuffle,而是100个新分区中的每一个都会声明10个当前分区。

    反过来从100个分区到1000个分区,将会出现shuffle。

  • 相关阅读:
    【转载】STL之priority_queue
    数据结构作业——直通车(并查集)
    Codeforces Round #342 (Div. 2) D. Finals in arithmetic(想法题/构造题)
    Size Balance Tree(SBT模板整理)
    平衡二叉查找树(AVL)的理解与实现
    查找树ADT——二叉搜索树
    (转载)通过金矿模型介绍动态规划
    动态规划(DP)基础
    hdu 1969 Pie(二分查找)
    poj 3104 Drying(二分查找)
  • 原文地址:https://www.cnblogs.com/yyy-blog/p/13266001.html
Copyright © 2011-2022 走看看