今天在实时读取HBase维度数据时发现取数据时有问题,Deicmal类型的数据异常,经过排查推理发现最后是Kafka数据通过StreamSets写入时存在问题:
问题原因:
Kafka里存的是Json数据,StreamSets通过解析JSON数据后把每个字段值写入HBase,因为JSON里字段是没有具体数据类型的,StreamSets可能会把字段转成字符串后解析成二进制写入HBase,这里就造成存储HBase的Decimal类型数据精度存在问题。
解决办法:
新增一个Field Type Converter组件模块,把JSON中为DECIMAL类型的字段由String类型转成DECIMAL类型,并标注精度和Round方式: