spark面试常问问题

Spark如何解决数据倾斜问题?

分为简单倾斜和复杂倾斜
简单是数据资源分布不均衡,或者执行入filter操作导致的partition之间数据大小不一致 使用coalesce重分区就可以(spark3。X版本引入AQE功能,自适应查询执行,会自动对小分区数据进行合并)
复杂数据倾斜一般是根据业务字段进行聚合运算时进行shuffle之后导致partition之间数据严重不均衡。比如针对全国信息表,以城市作为key,其他信息作为value,通过reduceByKey,你会发现]只有四个城市的数据非常大。
解决方案:
1)提高数据处理频率,同事降低单次数据处理量,这样可以导致每个partition之中的数据量减少
2)减少spark任务的并行度,把并行度降低到4 对象4个数据倾斜严重的分区(--num-executors 4 --executor-memory 5G)同时加大每个executor的内存和CPU核数 添加硬件资源同时不至于让硬件资源过于浪费。
3)尽量精简(单个)value的大小  只取聚合计算时value中需要的字段,不参加的字段全部抛弃 让value大小有效减少
4)对于严重的key进行加盐,把分区数增加,先进行聚合操作,然后再把key进行减盐操作,恢复到原本的kye,再次聚合得到最终结果

jar冲突(主要是版本要一致)

为什么会jar冲突?就是涉及到不同的依赖下面的子依赖有冲突
加载到不该加载的jar包
idea解决:(非社区版)
右击 Maven-> Show Dependencies

Driver和Executor

driver负责
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值