概要
mysql的bigint20长度是十进制的,clickhouse的Int32的长度是二进制的。
背景
因为当前公司的数据量从百万每天陡增到十几亿,所以之前老的数据处理程序承载不下,重新搭建了一套新的大数据架构。在给公司从0到1搭建数据集群的过程中,有一个需求需要定时将一个MySQL的表更新导入到clickhouse中。结果发现唯一ID在导入过程中变成了负数。对于这个字段的定义中:
mysql 是bigint20
clickhouse 是Int32
看上去clickhouse这个字段占用的空间大于mysql中的定义长度,不应该出现数据超长乱码的问题。
原因:
mysql 的bigint20 的数据范围是 (-10000000000000000000 到 10000000000000000000 -1)
clickhouse的Int32的数据范围是 (-2147483647 到 2147483648)
解决方案
将clickhouse的字段长度增大
结果
成功解决问题