关于UUID导致数据同步异常(org.apache.sqoop.mapreduce.AsyncSqlOutputFormat: Got exception in update thread: com)

1、异常概述及其分析过程

在大数据同步过程中,为了数据分析同步并按天更新到关系型数据中(以MYSQL为例)且保证数据的唯一性,采用UUID所谓的永远不会重复的字符串作为数据表的ID。

但在实际操作由于数据处理基数超大(数亿的数据量),加上UUID版本选择不恰当。致使UUID出现小概率事件重复,最终导致数据同步发生异常。异常如下


图一


图2


2、解决方案

有图一所示job_1499327741859_15469作业出现异常,根据Job的ID在大数据平台(CDH的YARN中)中查Job的日志如图二所示,

'28f449d76520496bba9e2e3f375b08a6' for key 'PRIMARY  的KEY存在重复。问题就来了,问什么ID重复,是什么原因导致UUID的重复,接下来
要从查找数据处理具体代码,如下图三中红框中可知java.util.UUID,random 它是产生UUID核心代码。接下来对UUID进全方位的了解,如链接
http://blog.csdn.net/qq592304796/article/details/52497940  可知上述所使用UUID为版本4,由于其产生的UUID为存在伪随机数,也就是说其有产生重复UUID的可能。
 

                                                             图三

3、问题结论

至此UUID重复异常原因被彻底剖析出来。所以强烈建议不要使用UUID版本4,以避免此后出现类似的异常

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值