作业四: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相同的值处理并且进行归并,其中归并的方法可以自己定义。