4.RDD操作
一、 RDD创建
1、从本地文件系统中加载数据创建RDD
(1)创建SparkContext:
(2)从本地文件系统中加载数据创建RDD:
(3)对比原文件:
2、从HDFS加载数据创建RDD
(1)启动hdfs:
(2)上传文件:
(3)查看文件:
(4)加载:
(5)停止hdfs:
3、通过并行集合(列表)创建RDD
输入列表、字符串、生成数组
二、 RDD操作
1、转换操作
(1)filter(func):
(2)map(func):
(3)flatMap(func)
- 分词:
- 单词映射成键值对:
(4)reduceByKey()
- 统计词频,累加:
- 乘法规则:
(5)groupByKey()
- 单词分组:
- 查看分组的内容:
- 分组之后做累加map :
(6)sortByKey()
- 词频统计按单词排序
(7)sortBy()
- 词频统计按词频排序
(8)RDD写入文本文件:
- 写入本地文件系统,并查看结果
结果:
- 写入分布式文件系统,并查看结果
结果:
2、行动操作
(1)foreach(print)
(2)foreach(lambda a:print(a.upper())
(3)collect()
(4)count()
(5)take(n)
(6)reduce()
- 数值型的rdd元素做累加
- 与reduceByKey区别:
reduce:reduce将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素(第三个元素)组成两个元素,再被传给输入函数,直到最后只有一个值为止。
reduceByKey:reduceByKey就是对元素为KV对的RDD中Key相同的元素的Value进行binary_function的reduce操作,因此,Key相同的多个元素的值被reduce为一个值,然后与原RDD中的Key组成一个新的KV对。