最近在从hive往o'racle推送数据的时候碰到一个问题
明明hive表结构中是bigint的字段 在推送到oracle表中对应的是number(18)的字段
报错
java.lang.ClassCastException: org.apache.hadoop.io.IntWritable cannot be cast to org.apache.hadoop.io.LongWritable
很奇怪 明明没有int的字段 为什么说检测到输入有int类型
最后排查出原因,是因为parquet文件中的schema 有好几个int类型的字段 也就是说在做推送的时候 系统直接读取的hdfs底层的parquet文件 而hive的表结构压根就没跟着
也就是说严格来说 数据的schema应该以底层的hdfs文件为主