关闭

Spark函数讲解:coalesce

1541人阅读 评论(0) 收藏 举报
分类:

函数原型

1 def coalesce(numPartitions: Int, shuffle: Boolean = false)
2     (implicit ord: Ordering[T] = null): RDD[T]

  返回一个新的RDD,且该RDD的分区个数等于numPartitions个数。如果shuffle设置为true,则会进行shuffle。

实例

01 /**
02  * User: 过往记忆
03  * Date: 15-03-09
04  * Time: 上午06:30
05  * bolg: http://www.iteblog.com
06  * 本文地址:http://www.iteblog.com/archives/1279
07  * 过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货
08  * 过往记忆博客微信公共帐号:iteblog_hadoop
09  */
10 scala> var data = sc.parallelize(List(1,2,3,4))
11 data: org.apache.spark.rdd.RDD[Int] =
12     ParallelCollectionRDD[45] at parallelize at <console>:12
13  
14 scala> data.partitions.length
15 res68: Int = 30
16  
17 scala> val result = data.coalesce(2false)
18 result: org.apache.spark.rdd.RDD[Int] = CoalescedRDD[57] at coalesce at <console>:14
19  
20 scala> result.partitions.length
21 res77: Int = 2
22  
23 scala> result.toDebugString
24 res75: String =
25 (2) CoalescedRDD[57] at coalesce at <console>:14 []
26  |  ParallelCollectionRDD[45] at parallelize at <console>:12 []
27  
28 scala> val result1 = data.coalesce(2true)
29 result1: org.apache.spark.rdd.RDD[Int] = MappedRDD[61] at coalesce at <console>:14
30  
31 scala> result1.toDebugString
32 res76: String =
33 (2) MappedRDD[61] at coalesce at <console>:14 []
34  |  CoalescedRDD[60] at coalesce at <console>:14 []
35  |  ShuffledRDD[59] at coalesce at <console>:14 []
36  +-(30) MapPartitionsRDD[58] at coalesce at <console>:14 []
37     |   ParallelCollectionRDD[45] at parallelize at <console>:12 []

  从上面可以看出shuffle为false的时候并不进行shuffle操作;而为true的时候会进行shuffle操作。RDD.partitions.length可以获取相关RDD的分区数。

0
0
查看评论

Spark中repartition和coalesce的用法

小白一名,如果有错的地方希望大家指出。
  • u011981433
  • u011981433
  • 2015-11-25 13:59
  • 12224

Spark Rdd coalesce()方法和repartition()方法

在Spark的Rdd中,Rdd是分区的。有时候需要重新设置Rdd的分区数量,比如Rdd的分区中,Rdd分区比较多,但是每个Rdd的数据量比较小,需要设置一个比较合理的分区。或者需要把Rdd的分区数量调大。还有就是通过设置一个Rdd的分区来达到设置生成的文件的数量。有两种方法是可以重设Rdd的分区:分...
  • xiangxizhishi
  • xiangxizhishi
  • 2018-01-21 06:14
  • 18

spark reparation和coalesce

repartition(numPartitions:Int):RDD[T]和coalesce(numPartitions:Int,shuffle:Boolean=false):RDD[T] 他们两个都是RDD的分区进行重新划分,repartition只是coalesce接口中shuffle为tru...
  • qq_14950717
  • qq_14950717
  • 2016-10-20 13:21
  • 903

一个非常有用的函数——COALESCE

很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,其实到目前为止,这个函数的确非常有用,本文主要讲解其中的一些基本使用:    首先看看联机丛书的简要定义:   返回其参数中第一个非...
  • DBA_Huangzj
  • DBA_Huangzj
  • 2012-12-16 03:29
  • 139102

spark算子(repartition和coalesce)

coalescecoalesce(numPartitions:Int,shuffle:Boolean=false):RDD[T] 他们两个都是RDD的分区进行重新划分,repartition只是coalesce接口中shuffle为true的简易实现,(假设RDD有N个分区,需要重新划分成M个分区...
  • weixin_35735929
  • weixin_35735929
  • 2016-11-02 11:34
  • 851

Spark RDD系列----3. rdd.coalesce方法的作用

当spark程序中,存在过多的小任务的时候,可以通过 RDD.coalesce方法,收缩合并分区,减少分区的个数,减小任务调度成本,避免Shuffle导致,比RDD.repartition效率提高不少。     rdd.coalesce方法的作用是创建Coalesced...
  • u012684933
  • u012684933
  • 2016-03-31 18:32
  • 3992

Oracle中coalesce函数的用法

学习了几天教主的书,今天看到coalesce函数,功能很强大啊! coalesce函数的参数是列,结果是取出第一个不为空的列的数据。 首先,建一个视图: CREATE OR REPLACE VIEW v AS SELECT NULL AS c1,NULL AS c2,1 AS c3,NULL ...
  • tanglang000
  • tanglang000
  • 2015-02-09 17:10
  • 2118

spark Reparation和Coalesce 区别

1.repartition()方法就是coalesce()方法shuffle为true的情况 2.coalesce 在spark SQL function中有类似 oracle中nvl2点作用
  • UnionIBM
  • UnionIBM
  • 2016-10-04 13:40
  • 1304

spark coalesce和repartition区别

结论: repartition是repartition特殊情况,即将原来的RDD分区数增大(会产生shuffle)。 一般用法:repartition增大分区数,repartition减少分区数 测试数据: scala> val arrayRDD = sc.parall...
  • wwyxg
  • wwyxg
  • 2016-04-01 11:15
  • 1672

Spark 重分区函数:coalesce和repartition区别与实现,可以优化Spark程序性能

源码包路径: org.apache.spark.rdd.RDD coalesce函数: 方法注释: Return a new RDDthat is reduced into numPartitions partitions. This results...
  • Dax1n
  • Dax1n
  • 2016-12-02 09:15
  • 5890
    个人资料
    • 访问:1564513次
    • 积分:13257
    • 等级:
    • 排名:第1198名
    • 原创:148篇
    • 转载:367篇
    • 译文:0篇
    • 评论:89条
    博客专栏
    文章分类
    最新评论