【Hive WARN】Column order_discount had to be cast to a less precise type in Hive
最近无聊,随表拷了一个业务数据库中的订单明细表,自己查看了一下导表的日志,发现一直在报一个异常,而且还不少。
具体日志如下:
18/06/19 13:41:56 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `order_info` AS t LIMIT 1
18/06/19 13:41:56 WARN hive.TableDefWriter: Column logistics_fee had to be cast to a less precise type in Hive
18/06/19 13:41:56 WARN hive.TableDefWriter: Column order_discount_amount had to be cast to a less precise type in Hive
18/06/19 13:41:56 WARN hive.TableDefWriter: Column order_amount had to be cast to a less precise type in Hive
18/06/19 13:41:56 WARN hive.TableDefWriter: Column payment_date had to be cast to a less precise type in Hive
18/06/19 13:41:56 WARN hive.TableDefWriter: Column send_date had to be cast to a less precise type in Hive
18/06/19 13:41:56 WARN hive.TableDefWriter: Column recipient_date had to be cast to a less precise type in Hive
18/06/19 13:41:56 WARN hive.TableDefWriter: Column refund_time had to be cast to a less precise type in Hive
18/06/19 13:41:56 WARN hive.TableDefWriter: Column creation_date had to be cast to a less precise type in Hive
18/06/19 13:41:56 WARN hive.TableDefWriter: Column last_update_date had to be cast to a less precise type in Hive
18/06/19 13:41:56 WARN hive.TableDefWriter: Column actual_amount had to be cast to a less precise type in Hive
18/06/19 13:41:56 WARN hive.TableDefWriter: Column audit_time had to be cast to a less precise type in Hive
18/06/19 13:41:56 INFO hive.HiveImport: Loading uploaded data into Hive
虽然,不影响hive表中的数据内容,但是有很多这种类似的报错,感到很不安。
找了很多现在的网上资源,发现大多数都会报这个错误,但是都给略过去了,都没有在意。
但是在我帅气的英文水平下,发现这是个类型转换,没错就是个类型转换
我们都知道,Hive是基于JAVA实现的数据建表,数据类型都是JAVA中的数据类型,但是在mysql中,有个数据库类型是小数,而且能指定小数点后几位,前几位的decimal的类型,主要就因为这个类型无法和JAVA同步,在导表的过程中,默认就直接将数据类型转换成了double,但是数据长度是不用的,导致了数据精度不准确。虽然不影响主要计算,但是如果高精度的信息,可能会影像计算结果。
请大家悉知,以上为工作生活中的一点点小收获,分享给大家。
还没有评论,来说两句吧...