Spark基础(2)分区

16 篇文章 0 订阅

当涉及到对程序性能有要求的时候,一定会使用分区技术。

RDD是弹性分布式数据集,通常RDD很大,会被分成很多个分区,分别保存在不同的节点上。增加并行度,减少通信开销。

分区原则:RDD分区的一个分区原则是是得分区的个数尽量等于集群中的CPU核心(Core)数目。

  • 如何手动设置分区

(1)创建RDD时:在调用textFile和parallelize方法时手动指定分区个数即可,语法格式:sc.textFile(path, partitionNum)

  (2) 通过转换操作得到新的RDD时:直接调用repartition方法即可

实例:repartition的用法

scala> var rdd2 = data.repartition(1)
scala> rdd2.partition.size
res4: Int = 1

scala> var rdd2 = data.repartition(4)
scala> rdd2.partition.size
res5: Int = 5

占位符语法(复习)

data.map((_,1)) 等价于 data.map(x => (x,1))
  • 打印元素(RDD元素)

在实际编程中,经常需要把RDD中的元素打印输出到屏幕上,一般采用语句rdd.foreach(println)或者rdd.map(println)

为了能够把多有worker节点上的打印输出信息也显示到Deriver Program中,可以使用collect()方法,比如,rdd.collect().foreach(println),但是由于collect()方法会把各个worker节点上的所有RDD元素都抓取到Driver Program中,因此这可能会导致内存溢出。因此当你只需要打印RDD的部分元素时,可以采用语句rdd.take(100).foreach(println)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值