目录

RDD算子练习

map 算子

filter 算子

flatMap 算子

交集、并集、差集、笛卡尔积

distinct 算子

​​​​​​​​​​​​​​first、take、top 算子

​​​​​​​​​​​​​​keys、values 算子

​​​​​​​mapValues 算子

​​​​​​​collectAsMap 算子

​​​​​​​mapPartitionsWithIndex 算子


RDD算子练习

RDD中的函数有很多,不同业务需求使用不同函数进行数据处理分析,下面仅仅展示出比较常用的函数使用,更多函数在实际中使用体会,多加练习理解。

map 算子

对RDD中的每一个元素进行操作并返回操作的结果。

//通过并行化生成rddval rdd1 = sc.parallelize(List(5, 6, 4, 7, 3, 8, 2, 9, 1, 10))  //对rdd1里的每一个元素rdd1.map(_ * 2).collect  //collect方法表示收集,是action操作//res4: Array[Int] = Array(10, 12, 8, 14, 6, 16, 4, 18, 2, 20)

filter 算子

函数中返回True的被留下,返回False的被过滤掉。

val rdd2 = sc.parallelize(List(5, 6, 4, 7, 3, 8, 2, 9, 1, 10))val rdd3 = rdd2.filter(_ >= 10) //大于等于10的留下rdd3.collect //10

flatMap 算子

对RDD中的每一个元素进行先map再压扁,最后返回操作的结果。

对RDD中的每一个元素进行先map再压扁,最后返回操作的结果

val rdd1 = sc.parallelize(Array("a b c", "d e f", "h i j"))//将rdd1里面的每一个元素先切分再压平val rdd2 = rdd1.flatMap(_.split(' '))//_是每一个元素,如其中一个:"a b c"   rdd2.collect//Array[String] = Array(a, b, c, d, e, f, h, i, j)

​​​​​​​交集、并集、差集、笛卡尔积

类似Scala集合类Set中相关函数,注意类型要一致。

注意类型要一致

val rdd1 = sc.parallelize(List(5, 6, 4, 3))val rdd2 = sc.parallelize(List(1, 2, 3, 4))//union并集不会去重val rdd3 = rdd1.union(rdd2) rdd3.collect//Array[Int] = Array(5, 6, 4, 3, 1, 2, 3, 4)//去重rdd3.distinct.collect//求交集val rdd4 = rdd1.intersection(rdd2)rdd4.collect//求差集val rdd5 = rdd1.subtract(rdd2)rdd5.collect//笛卡尔积val rdd1 = sc.parallelize(List("jack", "tom"))//学生val rdd2 = sc.parallelize(List("java", "python", "scala"))//课程val rdd3 = rdd1.cartesian(rdd2)//可以表示所有学生的所有可能的选课情况rdd3.collect//Array((jack,java), (jack,python), (jack,scala), (tom,java), (tom,python), (tom,scala))

​​​​​​​distinct 算子

对RDD中元素进行去重,与Scala集合中distinct类似。

val rdd = sc.parallelize(Array(1,2,3,4,5,5,6,7,8,1,2,3,4), 3)rdd.distinct.collect

​​​​​​​​​​​​​​first、take、top 算子

从RDD中获取某些元素,比如first为第一个元素,take为前N个元素,top为最大的N个元素。

val rdd1 = sc.parallelize(List(3,6,1,2,4,5))rdd1.top(2)// 6 5//按照原来的顺序取前N个rdd1.take(2) //3 6//按照原来的顺序取前第一个rdd1.first

​​​​​​​​​​​​​​keys、values 算子

针对RDD中数据类型为KeyValue对时,获取所有key和value的值,类似Scala中Map集合。

val rdd1 = sc.parallelize(List("dog", "tiger", "lion", "cat", "panther", "eagle"), 2)val rdd2 = rdd1.map(x => (x.length, x))rdd2.collect//Array[(Int, String)] = Array((3,dog), (5,tiger), (4,lion), (3,cat), (7,panther), (5,eagle))rdd2.keys.collect//Array[Int] = Array(3, 5, 4, 3, 7, 5)rdd2.values.collect//Array[String] = Array(dog, tiger, lion, cat, panther, eagle)   

​​​​​​​mapValues 算子

mapValues表示对RDD中的元素进行操作,Key不变,Value变为操作之后。mapValues表示对RDD中的元素进行操作,Key不变,Value变为操作之后val rdd1 = sc.parallelize(List((1,10),(2,20),(3,30)))val rdd2 = rdd1.mapValues(_*2).collect //_表示每一个value ,key不变,将函数作用于value// Array[(Int, Int)] = Array((1,20), (2,40), (3,60))

​​​​​​​collectAsMap 算子

当RDD中数据类型为Key/Value对时,转换为Map集合。

val rdd = sc.parallelize(List(("a", 1), ("b", 2)))rdd.collectAsMap//scala.collection.Map[String,Int] = Map(b -> 2, a -> 1)/Map((b ,2), (a , 1)) //Scala中Map底层就是多个二元组

​​​​​​​mapPartitionsWithIndex 算子

取分区中对应的数据时,还可以将分区的编号取出来,这样就可以知道数据是属于哪个分区的。

功能:取分区中对应的数据时,还可以将分区的编号取出来,这样就可以知道数据是属于哪个分区的

val rdd1 = sc.parallelize(List(1,2,3,4,5,6,7,8,9), 3)//该函数的功能是将对应分区中的数据取出来,并且带上分区编号val func = (index: Int, iter: Iterator[Int]) => {iter.map(x => "[partID:" +  index + ", val: " + x + "]")}rdd1.mapPartitionsWithIndex(func).collect//Array[String] = Array(//[partID:0, val: 1], [partID:0, val: 2], [partID:0, val: 3],//[partID:1, val: 4], [partID:1, val: 5], [partID:1, val: 6],//[partID:2, val: 7], [partID:2, val: 8], [partID:2, val: 9]

2021年大数据Spark(十六):Spark Core的RDD算子练习相关推荐

  1. 2021年大数据Kafka(六):❤️安装Kafka-Eagle❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 安装Kafka-Eagle 一.Kafka-eagle基本介 ...

  2. 2021年大数据HBase(六):HBase的高可用!【建议收藏】

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase的高可用 一.HBASE高可用的简介 二.搭 ...

  3. 2021年大数据ELK(六):安装Elasticsearch

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 安装Elasticsearch 一.创建普通用户 二.为普通用户 ...

  4. 2021年大数据发展十大趋势:抓准一个,就能掌握先机!

    导读:如何激活数据价值.真正从大数据中"淘金",成为2021年大数据的重中之重.大数据究竟如何持续不断地影响组织和机构,以及它给这个世界带来了何种影响,本文特别梳理出2021年大数 ...

  5. 2021年大数据ZooKeeper(六):ZooKeeper选举机制

    目录 ​​​​​​ZooKeeper选举机制 概念 全新集群选举 非全新集群选举 ZooKeeper选举机制 zookeeper默认的算法是FastLeaderElection,采用投票数大于半数则胜 ...

  6. 2021年大数据Flink(六):Flink On Yarn模式

    目录 Flink On Yarn模式 原理 为什么使用Flink On Yarn? Flink如何和Yarn进行交互? 两种方式 操作 1.关闭yarn的内存检查 2.同步 3.重启yarn 测试 S ...

  7. 客快物流大数据项目(十六):使用脚本创建镜像

    目录 使用脚本创建镜像 一.编写Dockerfile 二.构建镜像

  8. 2021年大数据HBase(十六):HBase的协处理器(Coprocessor)

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 HBase的协处理器(Coprocessor) 一.起源 二 ...

  9. 2021年大数据Hadoop(二十六):YARN三大组件介绍

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn三大组件介绍 ResourceManager No ...

  10. 2021年大数据Hadoop(三十):Hadoop3.x的介绍

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Hadoop3.x的介绍 介绍 Hadoop 3.0新特性 ...

最新文章

  1. 【学习笔记】cookie、session、token和分布式session
  2. 上一页下一页_Excel打印时一页放不下,4招轻松搞定,省下的纸叫老板加工资
  3. java11下载_JDK11 JAVA11下载安装与快速配置环境变量教程
  4. java 素数乘积,求助2424379123 = 两个素数的乘积,求这两个素数?
  5. kali linux中文乱码解决,kali-google-chrome中文乱码问题解决方法
  6. Python数据分析扩展库pandas的DataFrame排序方法小结
  7. 静态反编译工具IDA Pro 7 for Mac
  8. 金山android高级面试,金山视频云/KSYMediaPlayer_Android
  9. 视频教程-H3CS-WLAN 无线工程师认证-H3C认证
  10. windows简单命令系统优化
  11. duilib入门教程
  12. VMware虚拟机安装win10卡顿优化
  13. keyshot渲染玻璃打光_keyshot打光技巧,教你如何制作汽车自由式布光效果
  14. 《黑白团团队》第六次作业:团队项目系统设计改进与详细设计
  15. Linux_Oracle_11g_R2_RAC_安装配置详细过程
  16. 大脑构造图与功能解析_大脑的结构和功能?
  17. 2021年危险化学品生产单位安全生产管理人员考试试卷及危险化学品生产单位安全生产管理人员实操考试视频
  18. 什么是XGBoost
  19. Hutool - 对于图片的基本处理
  20. 【转】WebRTC多人音视频解决方案

热门文章

  1. 2021-2027年中国市医疗电子场投资分析及前景预测报告
  2. 2022-2028年中国手机配件行业发展前景战略及投资风险预测分析报告
  3. 【置顶】利用 NLP 技术做简单数据可视化分析教程(实战)
  4. python常用魔法函数
  5. 2021年大数据Hadoop(二十二):MapReduce的自定义分组
  6. Python:Scrapy 框架简单介绍
  7. 微信小程序 require module exports 的使用
  8. android studio 发布项目的流程
  9. Connot resolve Symbol '.......'
  10. ScrollView can host only one direct child 问题处理