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算子的主要内容,如果未能解决你的问题,请参考以下文章