如何高效用mapPartitions

本文探讨如何高效使用Spark中的mapPartitions,通过对比map与mapPartitions的性能差异,指出mapPartitions在处理大数据时的优势。示例展示了mapPartitions低效和高效用法,提醒开发者注意避免内存溢出的问题,并提供了一种无需缓存数据的解决方案。
摘要由CSDN通过智能技术生成

如何高效用mapPartitions


1. mappartition的妙用

       本文主要想讲如何高效的使用mappartition。首先,说到mappartition大家肯定想到的是map和MapPartition的对比。网上这类教程很多了,比如foreach和foreachPartition的区别。主要是map和foreach这类的是针对一个元素调用一次我们的函数,也即是我们的函数参数是单个元素,假如函数内部存在数据库链接、文件等的创建及关闭,那么会导致处理每个元素时创建一次链接或者句柄,导致性能底下,很多初学者犯过这种毛病。而foreachpartition是针对每个分区调用一次我们的函数,也即是我们函数传入的参数是整个分区数据的迭代器,这样避免了创建过多的临时链接等,提升了性能。下面的例子都是1-20这20个数字,经过map或者MapPartition然后返回a*3。

2. map的使用

[Scala] 纯文本查看 复制代码

?

1

2

3

4

5

6

val a = sc.parallelize(1 to 20, 2)

def mapTerFunc(a : Int) : Int = {

    a*3

}

val mapResult = a.map(mapTerFunc)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值