问题描述

问题描述/异常栈

java.lang.IllegalArgumentException: id isn't [Type: decimal], it's int64

解决方案

1、源表使用和kudu匹配的字段类型;

2、关系型数据库通过自定义表达式使用cast函数进行类型转换。

3、当报错信息是isn't [Type: decimal]。mysql的bigint unsigned会被Spark转成Decimal(20, 0),可以使用自定义表达式进行类型转换。cast(id as signed)。

问题原因

此类报错是因为来源字段和kudu的字段类型不匹配导致,可以检查来源表字段类型和kudu的字段类型是否一致,如果使用了函数,也要检查函数的返回值的类型,通过cast函数进行类型转换。

作者:常惠渊