4.RDD操作
一、RDD创建
1.从本地文件系统中加载数据创建RDD
- SparkContext的创建
- 从文件系统中加载数据创建RDD
- 与原文件对比
2.从HDFS加载数据创建RDD
- 启动hdfs
start-all.sh
- 上传文件
hdfs dfs -put 要上传的文件路径 上传目的路径
- 查看文件
hdfs dfs -ls 要查看的文件目录
- 加载
sc.textFile("hdfs://master:9000/user/hadoop/hwt.txt")
- 停止hdfs
stop-all.sh
3.通过并行集合(列表)创建RDD
- 输入列表、字符串、生成数组
二、RDD操作
转换操作
1.filter(func)
- 传入lambda匿名函数
- 显式定义函数
2.map(func)
- 字符串分词
- lambda函数
- 显式定义函数
- 数字加100
- lambda函数
- 显式定义函数
- 字符串加固定前缀
- lambda函数
- 显式定义函数
3.flatMap(func)
- 分词
- 单词映射成键值对
4.reduceByKey()
- 统计词频,累加
- 乘法规则
5.groupByKey()
- 单词分组
- 查看分组的内容
- 分组之后做累加 map
6.sortByKey()
- 词频统计按单词排序
7.sortBy()
- 词频统计按词频排序
- 查看分区数 getNumPartitions()
- 生成不同分区数的rdd
8.RDD写入文本文件
- 写入本地文件系统,并查看结果
- 写入分布式文件系统,并查看结果
行动操作
1.foreach(print) ----将数据集中的每个元素进行输出
foreach(lambda a:print(a.upper())) ----将数据集中的每个元素传递到lambda函数中运行
2.collect() ----以数组的形式返回数据集中的所有元素
3.count() ----返回数据集中的元素个数
4.first() ----返回数据集中的第一个元素
5.take(n) ----以数组的形式返回数据集中的前n个元素
6.reduce() ----通过函数func(输入两个参数并返回一个值)聚合数据集中的元素
- 数值型的rdd元素做累加
- 与reduceByKey区别
reduce : reduce将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素(第三个元素)组成两个元素,再被传给输入函数,直到最后只有一个值为止。
reduceByKey : 对元素为KV对的RDD中Key相同的元素的Value进行binary_function的reduce操作,因此,Key相同的多个元素的值被reduce为一个值,然后与原RDD中的Key组成一个新的KV对。