1、问题描述
使用streamsets将mysql数据同步到kudu中,直接解析mysql的binlog进行实时数据同步,发现一个小的细节问题,mysql中定义的date类型的字段在解析binlog后变成了带有星期几标致的值,如create字段是date类型,值为2019-06-19,那么streamsets的mysqlbinlog就会将其解析成Wed Jun 19,如果在kudu这边定义的create字段是string类型的话,这个值入库的时候就会是Wed Jun 19,和原始库差别太大了。
2、解决方案
因为kudu中没有date类型,可以将kudu目标库中的create字段定义为timestamp类型,但是入库的时候值也不是2019-06-19了,而是2019-06-19 00:00:00,会自动补全到时分秒级别,和原始库仍然有差别,但是可以后续处理。我们还额外使用了spark对原始库和目标库进行数据一致性比对,两边的create值一个是date类型的2019-06-19,一个是timestamp类型的2019-06-19 00:00:00,但是比较出来的结果是没有差异,也就是说spark根据其数据类型对实际的时间值进行了比较,发现没有差异。