Hive:bigint和string进行join出现匹配错误问题

转载链接

在hive中,两个表进行join,on条件两表的字段含义一致(都是整数),但数据类型不一致:string和bigint。join后发现如果数值过大则匹配的记录会出现问题:一条记录会匹配出多条记录(explain可以发现都转换为double)

如:190000000002778025,就会错误的匹配上*8023 ,*8025

a)原因:Java中精度只有15至16位,当数据超过精度就会不准------也就会出现超过精度的记录join上许多不一致的记录。

bigint和string比较时会隐式地都转换成double,java中double的精度只有15-16位(double可以精确的表示小于2^52=4503599627370496的数字)。当数字超过精度的时候就会比较不准确,出现上面描述的现象。

b)解决方法:建议将string转换为bigint~ cast(c as bigint) 后再进行比较。

float 和 double 的区别:double更占内容,在满足需求的基础上,使用float更合理。

相关推荐
lifewange21 小时前
Hive 数据库 增删改 完整操作指南
数据库·hive·hadoop
WL_Aurora1 天前
Sqoop数据迁移工具从入门到精通
hive·hadoop·sqoop
zgdlsz2 天前
羲之文化传承人王杰宝:沉厚笔墨间的守正出新
大数据·数据库·数据仓库·涛思数据
莽撞的大地瓜2 天前
舆情分析智能体:蜜度新浪舆情通以多Agent协同驱动全流程智能升级
大数据·数据仓库·数据分析
小的~~3 天前
CentOS7安装CDH6.3.2
hive·hdfs·kafka
陆水A4 天前
用CASE WHEN实现横向迭代,节点数据串行推算
大数据·数据仓库·数据库开发·etl·etl工程师
承渊政道4 天前
从ROWNUM到LIMIT:KES、Oracle与PostgreSQL的执行顺序差异解析
数据库·数据仓库·sql·mysql·安全·postgresql·oracle
青春万岁!!5 天前
hive模型数据异常-作业调度问题
大数据·数据仓库·hive
白日与明月5 天前
Hive分桶机制应用
数据仓库·hive·hadoop
Msshu1235 天前
XSP25全协议 100W PD快充诱骗芯片_串口读电压电流信息
hive·云计算·json·database·memcached