spark
文章平均质量分 56
神龙龙
一只专心学习的龙
展开
-
解决Hive和Spark数据倾斜
一、Hive数据倾斜一般都发生在Sql中groupby和joinon上1.不同数据类型关联产生数据倾斜例如:两个表进行关联,其中一个字段类型是int一个是String解决:把数字类型转换成字符串类型2.空值分布:经常有大量的空值数据进入到一个reduce中导致数据倾斜解决:自定义分区,将为空的key转变为字符串+随机数,将因为空值造成的数据倾斜数据分不到不同的reducer中(如果一下特殊异常值不需要可以直接where过滤掉)3.groupby代替distinct4....原创 2021-08-29 11:33:56 · 1080 阅读 · 0 评论 -
Spark架构流程 以及任务的划分
1)将任务提交给RM,申请ApplicaitonMaster2)RM收到请求后,分配container在合适的NM上,并启动ApplicationMaster,此时App就是Driver3)Driver向RM申请Executor内存,RM收到请求后会分配container在合适的NM上启动Executor进程4)Executor进程启动后会向Driver进行反向注册,Executor全部注册完后5)Driver端运行客户端程序中的main方法6)在main方法中构建了SparkCont...原创 2021-08-28 09:52:50 · 183 阅读 · 0 评论 -
Spark Shuffle未优化及优化后 hash shuffle sort shuffle(二)
在该模式下,数据会写入一个数据结构,reduceByKey写入map,一边通过map局部聚合,一边写入内存。达到一定阈值会将内存数据写入磁盘,清空内存结构。在溢写磁盘之前会根据key进行排序,排序后会分批写入磁盘中。一个task会产生多个临时文件,最后再每个task中将所有的临时文件进行合并,也就是一个task的所有数据都在这一个文件中,同时单独写一份索引文件,标识下游各个task的数据在文件中的索引start offset 和end offset触发机制:shuffle reduce...原创 2021-08-28 09:50:10 · 144 阅读 · 0 评论 -
Spark Shuffle未优化及优化后 hash shuffle sort shuffle(一)
起初spark向hadoop看齐,根据key的hash值往外溢出文件,每个task都分成3种类别的数据,把不同类别的数据汇聚计算最终的结果,reducer会根据分区号找到自己类别的数据汇聚成一个大的集合。缺点:每个map溢出的文件之间不互通,任务有多少个reduce就要开放多少个reduce溢出文件,导致设置分区数越大,消耗的物流空间越大,大量的溢出文件容易造成OOM优化后的shuffle使用合并机制,复用buffer,hash算法会根据key进行分类,同一个进程中把相同的key放在...原创 2021-08-28 09:47:28 · 105 阅读 · 0 评论