Spark学习之(RDD 转换算子)心得

1.转换算子:

	功能的补充和封装,将旧的RDD包装成新的RDD

2.map():

	返回一个新的 RDD,该 RDD 由每一个输入元素经过函数转换后组成(每次处理一条数据)
	
	rdd的计算在分区内是一个一个的执行逻辑,分区内数据执行有序,不同分区执行无序
	
	map将处理的数据逐条进行映射转换,转换可以是类型的转换,也可以是值的转换

3.mapPartitions():

	与map类似,可以以分区为单位进行数据转换操作(每次处理一个分区的数据)
	
	处理数据时会将整个分区的数据加载到内存中进行引用(有内存溢出的风险)

4.mapPartitionsWithIndex():

	与mapPartitionsWithIndex类似,带有正数参数表示分区的索引值

	参数里的函数类型必须是(Int, Interator[T]) => Iterator[U]

5.flatMap():

	与map类似,每一个输入的元素都可以被映射为0或者多个输出元素

6.glom():

	将一个分区形成一个数组,行成新的RDD类型时,RDD[Array[T]]

7.groupBy():

	按照传入函数的返回值进行分组,将相同的key对应的值放入一个迭代器

	中间经过shuffle过程:将数据根据制定的规则进行分组,分区默认不变,数据会被打乱重新组合

	同一个组的数据在一个分区,但一个分区中可能不止一组,分区与分组没有必然的联系

8.filter():

	过滤,返回一个由函数计算后返回值为true的输入元素组成的新的RDD

9.sample():

	以指定的随机种子随机抽样出制定数量的数据

	第一个参数表示 抽样数据后是否将数据返回   true(放回)、false(丢弃)

	第二个参数表示

		抽取不放回的场合,数据源中每条数据被抽取的概率

		抽取放回的场合,数据源中每条数据被抽取的可能次数

	第三个参数表示 抽取数据时的随机算法种子,默认使用系统当前时间作为种子

10.distinct():

	对源RDD去重后返回一个新的RDD

11.coalesce():

	缩减分区数,用于大数据过滤后,提高小数据集的执行效率
	
	默认情况下会将分区内的数据打乱重组, 可能会产生数据倾斜
	
	解决数据倾斜可以进行shuffle处理,将第二个参数设置为true

12.repartition():

	根据分区数重新通过网络随机洗牌所有数据,主要用来扩大分区数

13.sortBy():

	在函数对数据处理后按照数据比较结果进行排序,默认为升序,降序设置为 false

14.双value类型:

	intersection:交集

	union:并集

	substract:差集

	zip:拉链,将两个RDD组成 Key-Value 类型的RDD

	交集、并集、差集要求两个数据源数据类型保持一致

	拉链操作:

		两个数据源的类型可以不一致

		两个数据源的分区数量要一致

		两个数据源的分区中的数据量要一致

15.partitionBy():

	根据指定的分区规则对数据进行重分区

	如果原有的partionRDD与现在的partionRDD一致则不进行分区,否则会产生ShuffleRDD,产生shuffle过程

16.reduceByKey():

	相同key的数据进行value数据的聚合操作,两两聚合(在shuffle前有预聚合combine操作)

17.groupByKey():

	将数据源中相同key的数据分在一个组,形成对偶元组(直接进行shuffle)

	第一个元素是key,第二个元素是value的集合

18.aggregateBykey():

	存在柯里化:将原来接受两个参数的函数变成新的接受一个参数的函数的过程

	有两个参数列表:

		第一个参数列表传递一个参数来表示初始值

		第二个参数列表需要超过两个参数:

		第一个参数表示分区内计算规则

		第二个参数表示分区间计算规则

		最终返回数据结果应该和初始值类型保持一致

19.foldByKey():

	aggregateByKey的简化操作,分区间和分区内计算规则一致

20.combineByKey():

	针对相同key,将value合并成一个集合

	有三个参数:
		
		第一个参数表示将相同key的第一个数据进行结构的转换,实现操作

		第二个参数表示分区内的计算规则
	
		第三个参数表示分区间的计算规则

21.join():

	两个不同数据源的数据,相同key的value会连接在一起形成元组

	如果两个数据源中key没有匹配上,数据不会出现在结果中

	如果两个数据源中key有多个相同的,则可能出现笛卡尔乘积,数量会呈几何增长,导致性能降低

22.cogroup():

	在类型为(K,V)和(K,W)的 RDD 上调用,返回一个(K,(Iterable,Iterable))类型的RDD

	将key相同的数据聚合成一个迭代器

你可能感兴趣的:(Spark,spark,大数据)