spark与hive的数据倾斜
Hive常见的数据倾斜:
(1)本身数据就有倾斜
(2)sql语句造成的数据倾斜
(3)join容易造成数据倾斜
(4)group by造成的数据倾斜
Hive数据倾斜解决方法:
(1)参数调节
(2)SQL语句调节
(3)对于group by或distinct,设定 hive.groupby.skewindata=true
(4)map join可以避免数据倾斜
spark中的数据倾斜:
1、Executor lost,OOM,Shuffle过程出错
2、Driver OOM
3、单个Executor执行时间特别久,整体任务卡在某个阶段不能结束
4、正常运行的任务突然失败
数据倾斜的原因:
[if !supportLists]1. [endif]我们以Spark和Hive的使用场景为例。他们在做数据运算的时候会设计到,countdistinct、group by、join等操作,这些都会触发Shuffle动作,一旦触发,所有相同key的值就会拉到一个或几个节点上,就容易发生单点问题。
[if !supportLists]2. [endif]Shuffle是一个能产生奇迹的地方,不管是在Spark还是Hadoop中,它们的作用都是至关重要的,因为数据分配不均匀导致的数据倾斜。
3.在Spark streaming程序中,数据倾斜更容易出现,特别是在程序中包含一些类似sql的join、group这种操作的时候。 因为Spark Streaming程序在运行的时候,我们一般不会分配特别多的内存,因此一旦在这个过程中出现一些数据倾斜,就十分容易造成OOM。