Spark Rdd的所有算子操作,请见《sparkRDD函数详解.docx》
启动spark-shell 进行测试:
spark-shell --master spark://node1:7077
练习1:map、filter
//通过并行化生成rdd
val rdd1 = sc.parallelize(List(5, 6, 4, 7, 3, 8, 2, 9, 1, 10))
//对rdd1里的每一个元素乘2然后排序
val rdd2 = rdd1.map( * 2).sortBy(x => x, true)
//过滤出大于等于5的元素
val rdd3 = rdd2.filter(
>= 5)
//将元素以数组的方式在客户端显示
rdd3.collect
练习2:flatMap
val rdd1 = sc.parallelize(Array("a b c", "d e f", "h i j"))
//将rdd1里面的每一个元素先切分在压平
val rdd2 = rdd1.flatMap(.split(" "))
rdd2.collect
练习3:交集、并集
val rdd1 = sc.parallelize(List(5, 6, 4, 3))
val rdd2 = sc.parallelize(List(1, 2, 3, 4))
//求并集
val rdd3 = rdd1.union(rdd2)
//求交集
val rdd4 = rdd1.intersection(rdd2)
//去重
rdd3.distinct.collect
rdd4.collect
练习4:join、groupByKey
val rdd1 = sc.parallelize(List(("tom", 1), ("jerry", 3), ("kitty", 2)))
val rdd2 = sc.parallelize(List(("jerry", 2), ("tom", 1), ("shuke", 2)))
//求join
val rdd3 = rdd1.join(rdd2)
rdd3.collect
//求并集
val rdd4 = rdd1 union rdd2
rdd4.collect
//按key进行分组
val rdd5=rdd4.groupByKey
rdd5.collect
练习5:cogroup
val rdd1 = sc.parallelize(List(("tom", 1), ("tom", 2), ("jerry", 3), ("kitty", 2)))
val rdd2 = sc.parallelize(List(("jerry", 2), ("tom", 1), ("jim", 2)))
//cogroup
val rdd3 = rdd1.cogroup(rdd2)
//注意cogroup与groupByKey的区别
rdd3.collect
练习6:reduce
val rdd1 = sc.parallelize(List(1, 2, 3, 4, 5))
//reduce聚合
val rdd2 = rdd1.reduce(
+ )
rdd2.collect
练习7:reduceByKey、sortByKey
val rdd1 = sc.parallelize(List(("tom", 1), ("jerry", 3), ("kitty", 2), ("shuke", 1)))
val rdd2 = sc.parallelize(List(("jerry", 2), ("tom", 3), ("shuke", 2), ("kitty", 5)))
val rdd3 = rdd1.union(rdd2)
//按key进行聚合
val rdd4 = rdd3.reduceByKey(
+ _)
rdd4.collect
//按value的降序排序
val rdd5 = rdd4.map(t => (t._2, t._1)).sortByKey(false).map(t => (t._2, t._1))
rdd5.collect
练习8:repartition、coalesce
val rdd1 = sc.parallelize(1 to 10,3)
//利用repartition改变rdd1分区数
//减少分区
rdd1.repartition(2).partitions.size
//增加分区
rdd1.repartition(4).partitions.size
//利用coalesce改变rdd1分区数
//减少分区
rdd1.coalesce(2).partitions.size
注意:repartition可以增加和减少rdd中的分区数,coalesce只能减少rdd分区数,增加rdd分区数不会生效。

转载于:https://blog.51cto.com/13587708/2156635

spark笔记之RDD常用的算子操作相关推荐

  1. 2021年大数据Spark(十五):Spark Core的RDD常用算子

    目录 常用算子 基本算子 分区操作函数算子 重分区函数算子 1).增加分区函数 2).减少分区函数 3).调整分区函数 ​​​​​​​聚合函数算子 ​​​​​​​Scala集合中的聚合函数 ​​​​​ ...

  2. Spark笔记:RDD基本操作(上)

    本文主要是讲解spark里RDD的基础操作.RDD是spark特有的数据模型,谈到RDD就会提到什么弹性分布式数据集,什么有向无环图,本文暂时不去展开这些高深概念,在阅读本文时候,大家可以就把RDD当 ...

  3. Spark笔记:RDD基本操作(下)

    上一篇里我提到可以把RDD当作一个数组,这样我们在学习spark的API时候很多问题就能很好理解了.上篇文章里的API也都是基于RDD是数组的数据模型而进行操作的. Spark是一个计算框架,是对ma ...

  4. spark笔记spark优化

    基本概念(Basic Concepts) RDD - resillient distributed dataset 弹性分布式数据集 Operation - 作用于RDD的各种操作分为transfor ...

  5. spark应用程序转换_Spark—RDD编程常用转换算子代码实例

    Spark-RDD编程常用转换算子代码实例 Spark rdd 常用 Transformation 实例: 1.def map[U: ClassTag](f: T => U): RDD[U]  ...

  6. 大数据——Spark RDD常用算子总结

    Spark的核心是建立在同一的抽象弹性分布式数据集(Resilient Distributed Datasets,RDD)之上的,这使得Spark的各个组件可以无缝的进行集成,能够在同一个应用程序中完 ...

  7. Spark15:Spark SQL:DataFrame常见算子操作、DataFrame的sql操作、RDD转换为DataFrame、load和save操作、SaveMode、内置函数

    前面我们学习了Spark中的Spark core,离线数据计算,下面我们来学习一下Spark中的Spark SQL. 一.Spark SQL Spark SQL和我们之前讲Hive的时候说的hive ...

  8. Spark RDD常用算子使用总结

    文章目录 概述 Transformation(转换算子) 1. map 2. flatMap 3. filter 4. mapPartitions 5. mapPartitionsWithIndex ...

  9. Spark常用的算子以及Scala函数总结

    上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习  快速带你晋级 阅读全文 > 正文共11264个字,7张图,预计阅读时间28分钟. Spark与Scala 首先, ...

最新文章

  1. 训练softmax分类器实例_第四章.模型训练
  2. 《系统集成项目管理工程师》必背100个知识点-38资源平滑和资源平衡
  3. Spring Aop 组件概述
  4. 计算机组成原理实验load,计算机组成原理实验报告五
  5. 网络编程模型综述 之 UNIX网络I/O模型
  6. MySQL安装之后没有MySQL数据库的原因
  7. 计算机组成原理期末考试题目及答案,计算机组成原理期末考试试题附标准答案.doc...
  8. js进阶 11-15 jquery过滤方法有哪些
  9. 6-2 函数式编程例一
  10. 宏、函数、宏和函数的区别
  11. 2019年末逆向复习系列之从猫眼字体反爬分析谈谈字体反爬的前世今生
  12. 论文阅读《PatchMatchNet: Learned Multi-View Patchmatch Stereo》
  13. aspect 方法入参 获取_Spring Aspect 获取请求参数
  14. html5 人物画像,人物头像画不准?掌握这五步,让你把人物头像画准,画像
  15. BitTorrent概述
  16. CentOS下MySQL安装失败,报socket '/tmp/mysql.sock错误解决方法
  17. PTA7-22 龟兔赛跑
  18. 代码生成MANIFEST.MF文件
  19. linux io apic,linux-kernel – IO-APIC级别与PCI-MSI-X之间的差异
  20. 鸿蒙与苹果性能,任正非谈鸿蒙:两三年,鸿蒙系统可与苹果系统相媲美,能否现实?...

热门文章

  1. Cisco交换机设置管理IP
  2. eclipse离线安装Activiti Designer插件
  3. 如何用android下载python_如何在android上运行Python代码
  4. python分析nginx日志_利用python分析nginx日志
  5. html提值到php 冒泡,如何实现Html事件冒泡
  6. 安装python3后使用yum命令报错?
  7. EclipseLink+H2 快速搭建JPA开发环境
  8. 说透Applet的数字签名之2——数字签名
  9. JavaScript创建与读写本地文件(IEFirefox)
  10. frame中src怎么设置成一个变量_OpenCV图像人脸检测及视频中的人脸检测(附源码)...