文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么进行spark的基本算子使用和源码解析

2023-06-02 13:13

关注

这篇文章将为大家详细讲解有关怎么进行spark的基本算子使用和源码解析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一.coalesce

1.coalesce源码

怎么进行spark的基本算子使用和源码解析
怎么进行spark的基本算子使用和源码解析

2.coalesce解释

是窄依赖由多变少shuffer默认是false,要注意

3.coalesce应用场景

解决小文件,例如你如果开始有200个文件对应20分区,你极端情况下你过滤变长一个文件,你不能还用200个分区去装吧用coalesce解决,主要就是把前面的压缩一下,但是过滤完后你要用coalesce必须实现做预估

怎么进行spark的基本算子使用和源码解析

4.上述的极端情况

你如果是xxx.oalesce(1),从源头就是1,不会像mr可以设置reduce的数量

5.注意事项用coalesce 中RDD的不可变性

下图说述的分区的大小a.partitions.size  你之前没有用变量接收coalesce 的值,是不会变得值

怎么进行spark的基本算子使用和源码解析

6.你传一个参数要小于默认分区才会生效

怎么进行spark的基本算子使用和源码解析

7.coalesce设置的参数大于默认的分区数不会生效,前提是一个参数

怎么进行spark的基本算子使用和源码解析

8.coalesce设置的参数大于默认的分区数生效

怎么进行spark的基本算子使用和源码解析

9.此问题对应的源码:

note With shuffle = true, you can actually coalesce to a larger number一般数不需要第二个参数的

二.repartition

1.源码:

怎么进行spark的基本算子使用和源码解析

2.底层调用的是coalesce,但是传两个参数,允许shuffer

3.由少变多

4.repartition与coalesce区别:

就是repartition底层调用coalesce两个参数

三.map方法使用

1.源码

怎么进行spark的基本算子使用和源码解析

2.解释

每个函数操作的对象是每个元素

3.注意事项

千万不要用于操作数据库,否则一个元素要拿个connect,太耗费资源

四.mapPartitions

1.源码

怎么进行spark的基本算子使用和源码解析

2.解释

每个函数作用在每个分区上,多用于操纵数据库,一个分区一个connect

五.foreach 与 foreachPartition

1.源码

怎么进行spark的基本算子使用和源码解析

2.解释

一个是打印每个元素,一个是按分区打印,都是action

3.注意事项

foreachPartition多用于操作数据库,存储结果

五.collect

1.源码

怎么进行spark的基本算子使用和源码解析

2.解释与注意事项

源码 返回数组,数组里包含所有元数数据小用可以,因为数据都会被放到内存里,输出到driver端的超过内存会报oom

3.driver端的OOM调整一些方法

把driver 调大一些,有局限性RDD中元素太大,抽取回driver会报OOP不可以用collect可以用take

4.collect注意数据量

collectcollectByKeycollectByValuecollectAsMap  结果集出来后变成map这些要看数据量要悠着点用,都要数据量少广播变量必须数据量少才可以用

六.take

1.源码

怎么进行spark的基本算子使用和源码解析

2.解释

面试常问take是全部扫描还是部分扫描:部分扫描从源码有体现

3.collect 与 take 注意

不确定数据有多大你可以先count一下如果少的情况下捏可以用collect,如果太多可以用take这些知识测试用要全部结果你可以保存到文件系统上去saveas...

七.groupByKey 与 reduceByKey

1.源码reduceByKey

怎么进行spark的基本算子使用和源码解析

2.源码groupByKey

怎么进行spark的基本算子使用和源码解析

3.reduceByKey测试代码

怎么进行spark的基本算子使用和源码解析

4.测试WEBUI截图

怎么进行spark的基本算子使用和源码解析

5.groupByKey测试代码

怎么进行spark的基本算子使用和源码解析

6.测试WEBUI截图

怎么进行spark的基本算子使用和源码解析

7.groupByKey与reduceByKey比较

groupByKey  比reduceByKey  数据大小明显变大,不如reduceByKey  性能好

怎么进行spark的基本算子使用和源码解析

8.groupByKey与reduceByKey shuffer截图比较

groupByKey   所有元素都shuffer

怎么进行spark的基本算子使用和源码解析

reduceByKey  在map阶段有一个聚合

怎么进行spark的基本算子使用和源码解析

关于怎么进行spark的基本算子使用和源码解析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯