4.RDD操作
- 一、 RDD创建
- 从本地文件系统中加载数据创建RDD
- 从HDFS加载数据创建RDD
- 通过并行集合(列表)创建RDD
- 二、 RDD操作
- 转换操作
- filter(func)
- map(func)
- flatMap(func)
- reduceByKey()
- groupByKey()
- sortByKey()
- sortBy()
- 行动操作
- foreach(func)
- collect()
- count()
- take(n)
- reduce()
- 转换操作
一、 RDD创建
从本地文件系统中加载数据创建RDD
-
sc:SparkContext(shell自动创建)
-
本地文件系统中加载数据创建RDD
Spark采用textFile()方法来从文件系统中加载数据创建RDD
该方法把文件的URI作为参数,这个URI可以是:
-
本地文件系统的地址
-
或者是分布式文件系统HDFS的地址
-
或者是Amazon S3的地址等等
-
从HDFS加载数据创建RDD
-
启动hdfs
-
上传文件
-
查看文件
-
spark内加载文件
textFile默认是读hdfs,所以hdfs可以省略。
hdfs的默认目录,前三条语句是完全等价的,可以使用其中任意一种方式
不是默认目录,要还上路径
-
停止hdfs
通过并行集合(列表)创建RDD
-
输入列表、字符串、numpy生成数组
二、 RDD操作
转换操作
对于RDD而言,每一次转换操作都会产生新的RDD,供给下一个“转换”使用
转换得到的RDD是惰性求值的,也就是说,整个转换过程只是记录了转换的轨迹,并不会发生真正的计算,只有遇到行动操作时,才会发生真正的计算,开始从血缘关系源头开始,进行物理的转换操作
操作 | 含义 |
---|---|
filter(func) | 筛选出满足函数func的元素,并返回一个新的数据集 |
map(func) | 将每个元素传递到函数func中,并将结果返回为一个新的数据集 |
flatMap(func) | 与map()相似,但每个输入元素都可以映射到0或多个输出结果 |
groupByKey() | 应用于(K,V)键值对的数据集时,返回一个新的(K, Iterable)形式的数据集 |
reduceByKey(func) | 应用于(K,V)键值对的数据集时,返回一个新的(K, V)形式的数据集,其中每个值是将每个key传递到函数func中进行聚合后的结果 |
filter(func)
-
显式定义函数
结果不明显,换个关键词
-
lambda函数
map(func)
-
字符串分词
-
显式定义函数
-
lambda函数
-
-
数字加100
-
显式定义函数
-
lambda函数
-
-
字符串加固定前缀
-
显式定义函数
-
lambda函数
-
flatMap(func)
-
分词
-
单词映射成键值对
reduceByKey()
-
统计词频,累加
-
乘法规则
groupByKey()
-
单词分组
-
查看分组的内容
-
分组之后做累加 map
sortByKey()
-
词频统计按单词排序
sortBy()
-
词频统计按词频排序
行动操作
行动操作是真正触发计算的地方。Spark程序执行到行动操作时,才会执行真正的计算,从文件中加载数据,完成一次又一次转换操作,最终,完成行动操作得到结果。
操作 | 含义 |
---|---|
count() | 返回数据集中的元素个数 |
collect() | 以数组的形式返回数据集中的所有元素 |
first() | 返回数据集中的第一个元素 |
take(n) | 以数组的形式返回数据集中的前n个元素 |
foreach(func) | 将数据集中的每个元素传递到函数func中运行 |
reduce(func) | 通过函数func(输入两个参数并返回一个值)聚合数据集中的元素 |
foreach(func)
-
foreach(print)
-
foreach(lambda a:print(a.upper())
collect()
count()
take(n)
reduce()
-
数值型的rdd元素做累加
-
与reduceByKey区别
reduceByKey(func)应用于(K,V)键值对的数据集时,返回一个新的(K, V)形式的数据集,其中的每个值是将每个key传递到函数func中进行聚合后得到的结果
原文地址:https://www.cnblogs.com/DingyLand/archive/2022/03/30/homework_04_.html
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341