项目进行了大半后发现悲剧了,利用sqoop默认的从oracle数据库到处的数据表,如果其中的数据精度大于15位,而导入的表有些字段默认
项目进行了大半后发现悲剧了,利用sqoop默认的从oracle数据库到处的数据表,如果其中的数据精度大于15位,而导入的表有些字段默认的是double类型,结果导致大于16的数导入到了hive中,查询时只有15位的精度,悲哀啊,,切记。
相关阅读:
基于hadoop集群的hive安装
hive内表和外表的区别
hadoop + hive + map +reduce 集群安装部署
hive本地独立模式安装
hive学习之wordcount单词统计
public class helloworld {
public static void main(string args[]){
// double dou = 9813113054842628;
string s = 9813113054842628;
system.out.println(double.valueof(s));
string s1 = 9813113054842627;
system.out.println(double.valueof(s1));
}
}
输出结果
9.813113054842628e15
9.813113054842628e15
原因是oracle的number精度大于java中的double类型。
hive 的详细介绍:请点这里
hive 的下载地址:请点这里
本文永久更新链接地址: