RDD创建
从文件系统中加载数据生成RDD
spark
的sparkcontext
通过textfile()
读取数据生成内存中的RDD
,文件来源:
- 本地文件系统
- 分布式文件系统
HDFS
Amazon S3
等云端的文件
1 | # 本地加载 |
通过并行集合(数组)创建RDD的实例
并行parallelize()
方法创建
1 | array = [1,3,4,5,2] |
RDD操作
转换操作
RDD是只读的,只能在修改的过程进行修改。转换过程是惰性机制。整个转换过程只是记录转换的轨迹,并不会发生真正的计算。只有遇到行动操作action
时候,才会发生真正的计算。三种操作:
- filter
- map
- flatmap
- groupbykey
filter(func)
筛选满足函数func的元素,并且返回一个新的数据集
1 | lines = sc.textFile("word.txt") |
map(func)
将RDD
对象中的元素放入func
函数中进行操作
1 | data = [1,2,3,4] |
1 | lines = sc.textFile("word.txt") |
flatmap(func)
与map比较类似,但是每个输入元素都可以映射到0个或者多个输出结果(可乐罐栗子)
1 | lines = sc.textFile("file:///usr/local/spark/code/radd/word.txt") # 加载本地文件 |
groupbykey()
通过key进行分组;相同的值放到一个元组中,是以iterable的数据形式存放。
1 | words = sc.paralelize(obj) |
reduceByKey(func)
将返回的值value通过func函数进行计算
行动操作action
执行行动类型操作,发生真正的计算
函数 | 说明 |
---|---|
count() | 返回数据集中的总个数 |
collect() | 以列表或数组的形式返回数据集中的所有元素 |
first() | 返回第一个元素 |
take(n) | 以列表的形式返回前n个元素 |
reduce(func) | 通过func函数聚合数据集中的所有元素 |
foreach(func) | 将数据集中的元素传递给函数func进行运行 |
惰性机制
在RDD的操作中,只有遇到行动类型的操作才是开始计算操作
1 | lines = sc.textFile("word.txt") |