Spark-core算子

Posted 走多远才算远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark-core算子相关的知识,希望对你有一定的参考价值。

文章目录

Transformation算子

1.map : 一一映射
处理rdd里面每一个元素

2.filter
map相关的算子、kv类型的算子、other算子 
3.map相关的算子
	makeRDD =>了解 =》 parallelize
	map vs mapPartitions: 
		1.map 一个作用的rdd里面每一个元素 
		2.mapPartitions 作用的rdd里面 分区
	
	需求: spark-core: 
		map filter =》 不让用 如何实现 功能?  平台
			MapPartitionsRDD 

	4.mapPartitionsWithIndex
		可以查看 rdd里面每个分区对应的数据 
		注意: 
			元素是如何分区,先不用管 【partitioner mr】

	5.mapvalues
		针对kv类型对v做处理 
	
	6.flatMap 
		一一映射 
		flatmap = flatten + map  
		flatten => 压扁的 
		补充: 
			flatMap =》 更改原始数据结构的 
			map 不会改变

other算子

1.glom : 把每一个分区的数据形成一个数组 比mapPartitionsWithIndex
2.sample 抽样
3.union : 简单数据合并 不去重 sql : union union all
4.intersection 交集
5.subtract 差集:出现在a里面的元素的 没有出现在b里面的 叫差集
6.distinct 去重 ***
默认采用分区器: hash

kv类型算子

1.groupByKey 按key进行分组 不要使用 效率低 不灵活
mapSideCombine = false 没有开启的 发送数据 网络io 没有变化的
2.reduceByKey
mapSideCombine = true + func

			distinct 底层: 
				map + reduceByKey + map  只对key进行去重
			需求: 
				disctint =》 不使用distinct 完成数据去重?
				底层
		spark-core: 
			1.disctint =》 不使用distinct 完成数据去重?
			 底层实现
	3.groupby  自定义分组 灵活
	4.sortByKey =》 按照key进行排序 
		分区排序  =》 hive sort by  
		全局排序 =》 前提 rdd分区数 1个 
	5.sortby  自定义排序 灵活

rdd方式进行数据分析,一定要清楚 rdd里面的数据结构 【rdd进行数据开发 不太方便】 sql 
mr 
	6.join  vs cogroup  【了解】
		1. 根据 key进行关联 
		2. join返回值类型: 
				RDD[(K, (option[V], option[W]))]

Action算子

1.collect()
2.foreach() => 输出 driver
1.控制台
2.hdfs 不这样用
3.db
3.foreachpartition 调优点

input =》 todo =》 db mysql 
	获取mysql连接 

4.reduce =》 mapreduce reduce 
5.first() vs take 
	first 底层调用 task算子
6.top  vs  takeOrdered
	hive topn  
	top  降序 获取前n个数据集 
	takeOrdered 升序获取前n个数据集 
7.countByKey()

常用: 
	foreach()
	foreachpartition

总结:

转换算子常用的:

​ map、flatmap、filter、mapparitions、distinct、
​ groupby、sortby、reducebykey、mapvalues

Action算子常用的:

​ foreach()
​ foreachpartition

以上是关于Spark-core算子的主要内容,如果未能解决你的问题,请参考以下文章

Spark-core:Spark RDD的高级算子

Spark-Core RDD转换算子-Value型

Spark-Core RDD转换算子-双Value型交互

sql 升序降序排列

oracle 默认是升序还是降序

sql查询降序和升序的问题