spark的问题集锦

和小伙伴们一起做这个项目好久了,上线期间也是遇到了许多问题,这里自我总结下,防止下次再犯!
项目在开发方面主要是基于spark开发的,里面使用到了spark core、spark sql、spark Streaming去进行编程,项目中有多个模块,像用户session分析模块、单条转换率模块、各区域热门商品模块、广告实时点击流统计模块等。
项目中遇到的问题:
1、classNotFound问题
使用maven把项目打成jar包,但是这里一定要主要不要忘记把一些项目中需要的依赖也打进jar包中。
2、数据写入mysql出现问题
经检查发现是mysql关闭了,解决办法:在调度脚本中加上service mysqld start,保证mysql启动。
3、集群内存不足,解决办法:hadoop集群扩容,增加Datanode。
4、spark序列化问题,serialable error等此类型的错误一般都是因为没有把class类序列化,解决办法:在定义pojo类时都实现serializable接口。
5、spark程序运行过程中时不时的报错shuffl …file not found ,产生原因:一般是在shuffle时某个节点向别的节点远程拉取数据,但是那个节点却正在做gc操作,在gc的时候该节点的其他的一切进程都会暂时停止工作,所以如果刚好碰到时间较长的gc时就会拉取数据失败并报错。解决办法:在sparkConf中设置一些参数:
spark.shuffle.io.maxRetries, 20 //最大尝试拉取数据次数,默认3次
spark.shuffle.io.retrywait,60 //每次拉取数据等待时间,默认5s
6、spark streaming的batch interal的调试,不能太大,也不要过小,不能低于200ms
7、spark宕机消费kafka的数据保证exactly once,当spark程序停掉或意外死亡后,如果没有任何配置,那么从它死亡到重启之间的kafka的数据就不能被消费了,相当于丢失了,这是我们不能接受的,解决办法:spark在消费kafka数据时我们自己维护好每个topic的partition的消费到的offset,在开始读取kafka数据时要以指定offset的方式读取kafka的数据。代码干货:
//从db中读取自己维护的offset数据,kafkaTopic是自定义的pojo
List lastestOffset = DBUtil.getLastestOffs

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值