Spark基础转换及行动操作(python实验)
注意:实验前先引入包from pyspark.context import SparkContext ,还需配置 sc = SparkContext('local', 'test') ,然后才能用sc做操作。
一、常见的转换操作
1、map() : 将函数应用于RDD中的每个元素,将返回值构成新的RDD
2、flatMap() :将函数应用于RDD 中的每个元素,将返回的迭代器的所有内容构成新的RDD。通常用来切分单词(以[1,2,3,4]数据集为例)
3、filter() : 返回一个由通过传给filter()的函数的元素组成的RDD
4、distinct() :去重
5、sample(withReplacement, fraction, [seed]) :对RDD采样,以及是否替换(就是随机取几个出来,所以每次结果可能不一样)。
以上是对一个数据集处理,下面是针对两个以上的数据集
1、union() :生成一个包含两个RDD 中所有元素的RDD(是所有,不得去重)
2、intersection() :求两个RDD 共同的元素的RDD
3、subtract() :移除一个RDD 中的内容(例如移除训练数据)
4、cartesian() : 与另一个RDD 的笛卡儿积
二、常见的行动操作
1、reduce() :它接收一个函数作为参数,这个函数要操作两个RDD 的元素类型的数据并返回一个同样类型的新元素。
上面例子中,若传入列表结果为9;若传入集合结果为6,这是因为python集合会去重了才作为参数传入计算。
2、fold() :它和reduce() 类似,接收一个与reduce() 接收的函数签名相同的函数,再加上一个“初始值”来作为每个分区第一次调用时的结果
3、collect() :返回RDD中的所有元素
注意:使用collect()要求数据不是很大,所有数据都必须能一同放入单台机器的内存中,常用于单元测试中。
4、count() :RDD 中的元素个数
5、countByValue():各元素在RDD 中出现的次数
实验得知,python返回的是一个字典,通过键可以获取对应次数。
6、take(num) :从RDD中返回num个元素
7、top(num) :从RDD中返回最前面的num个元素
8、takeOrdered(num):函数用于从RDD中,按照默认(降序)或者指定的排序规则,返回前num个元素。
9、takeSample(withReplacement, num, [seed]):从RDD中返回任意一些元素
10、aggregate(zeroValue)(seqOp, combOp):和reduce() 相似,但是通常返回不同类型的函数
11、foreach(func):对RDD中的每个元素使用给定的函数