spark hive 向mysql推数 非常慢 优化

最近在客户现场遇到一个向mysql 推送数据 非常非常慢的问题
我刚到客户现场,看到的是程序已经跑了一天零4个小时,我直接给杀掉了
其中有一张表的数据大概是900万左右,花了一个多小时,才推了25万左右的数据
经过优化900万的数据,花了大概8分钟左右

引起数据插入慢的原因可能有:程序上的问题,数据库的问题:主键(校验唯一性),索引(创建索引),锁表、数据库的一些配置的限制等等

一、在mysql的连接配置上 rewriteBatchedStatements=true

jdbc:mysql://X.X.X.X:3306/XXX?characterEncoding=UTF-8&rewriteBatchedStatements=true

意思就是把多个insert into X values() ,改为insert into X values(…),(…),(…)
这个配置加上之后,就提升到8分钟左右了,但是如果拼接的sql太长,要考虑修改max_allowed_packet配置
下面参数可适当修改,但是效果怎么样不知道!
二、修改mysql配置(这些配置不是越大越好)
(1)修改 bulk_insert_buffer_size

show VARIABLES like 'bulk_insert_buffer_size'

在这里插入图片描述
默认是8388608 / 1024 / 1024 = 8 可以调整为100 * 1024 * 1024 = 104857600

set global bulk_insert_buffer_size = 104857600

(2)修改 max_allowed_packet

show VARIABLES like 'max_allowed_packet'

在这里插入图片描述
*默认是4194304 / 1024 / 1024 = 4 可以调整为 20 * 1024 1024 = 20971520

set global max_allowed_packet = 20971520
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值