MySQL主从一致性对比
通过以上手段流程就能完美的把大量的数据计算从MySQL迁移到大数据平台,剩下的少量不一致的key值,再到MySQL上比对,从而避免了对业务数据库的影响。大数据库对比有两种选择MapReduce以及Spark,相对来说Spark会比MapReduce简单很多,所以我们选择Spark, 下面简单介绍一下大概的对比方案的实施步骤: 1 导出文件 采用select * into outfile从mysql中导出要对比的表,假设我们从master中导出了一张表,导出文件为:master.txt,内容为: 1,"abc","dddddd" 2,"ef","adddd" 从slave中导出一张表,导出文件为:slave.txt,内容为: 1,"tttt" 2,"fffff" 2 上传文件到hdfs中 hadoop fs -copyFromLocal master.txt / hadoop fs -copyFromLocal slave.txt / 3 采用下面的spark脚本计算不同的key值 val rddMaster = sc.textFile("/master.txt").map(x =>(x.split(",")(0),x)) // 假设第一个字段是主键 val rddSlave = sc.textFile("/slave.txt").map(x =>(x.split(",x)) val difference = rddMaster.cogroup(rddSlave).filter(x=> x._2._1 != x._2._2 ) val differenceKey = difference.keys() differenceKey.collect 通过三面的三个步骤我们就能够得出不同的key值有哪些了。 上面的代码非常简单,只是提供一个思路,对于具体的情况肯定会复杂一些,如有多个主键的情况,依据主键数据中包含了分割符号等等情况,这里就不对这些情况进行细说了。 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |