作业四:1. RDD创建 2. RDD操作
1. RDD创建
- 从本地文件系统中加载数据创建RDD
- 从HDFS加载数据创建RDD
# 启动HDFS
start-all.sh
# 查看HDFS文件
hdfs dfs -ls 查看的文件目录
# 上传文件到HDFS
hdfs dfs -put 本地文件路径 HDFS目的路径
# 查看HDFS文件
hdfs dfs -cat 文件名称
# HDFS加载数据创建RDD
sc.textFile("hdfs://master:9000/user/hadoop/my.txt")
# 停止hdfs
stop-all.sh
- 通过并行集合(列表)创建RDD
2. RDD操作
转换操作
- filter(func)
- map(func)
- 字符串分词
- 数字加100
- 字符串加固定前缀
- flatMap(func)
- 分词
- 单词映射成键值对
- reduceByKey()
- 统计词频,累加
- 乘法法则
- groupByKey()
- 单词分组
- 查看分组内容
- 分组后做累加map
- sortByKey()
- 词频统计按单词排序
- sortBy()
- 词频统计按词频排序
- RDD写入文本文件
- 写入本地文件系统,并查看结果
- 写入分布式文件系统,并查看结果
行动操作
- foreach(print)
- foreach(lambda a:print(a.upper()))
- collect()
- count()
- first()
- take(n)
- reduce()
- 数值型的rdd元素做累加
- 与reduceByKey的区别
--reduce:把RDD中的每一个元素拿出来处理并形成一个新的RDD元素。reduce处理数据时有着一对一的特性,它会把数据集合中每一个元素都处理一次,并且每一个元素都对应着一个输出。
--reduceByKey:把RDD中的key相同的一组数据拿出来处理,形成一个新的RDD。reduceByKey处理数据时有着多对一的特性,它会把所有key相同的值处理并且进行归并,其中归并的方法可以自己定义。