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更合理。

相关推荐
l1t1 天前
kryonix提交的DuckDB 统一并优化标量执行器基础设施 - #24564 PR
开发语言·数据库·数据仓库·sql
ZCBUS实时计算2 天前
政务海量分库分表汇聚实战:基于 3 节点 ZCBUS 集群完成医保 10TB 数据实时整合
大数据·数据库·数据仓库·sql·dba·etl·政务
William Dawson3 天前
【踩坑实录|Hive1\.2\.1数据服务接口5大疑难问题调试与全方位优化方案】
java·hive·spring boot
hopsky3 天前
数据架构与商业智能
数据仓库·bi
APItesterCris5 天前
Open Claw 实战教程:5 分钟搭建京东商品自动化监控与数据分析系统
大数据·运维·数据库·数据仓库·自动化
RestCloud7 天前
ETL、ELT、CDC区别详解,2026数据集成模式选型指南与落地实战
数据仓库·etl·cdc·数据同步·数据集成平台·实时数据同步·elt
江晓鱼未暖7 天前
十七、Redis 核心原理与架构详解
大数据·数据库·数据仓库·redis·缓存·架构
l1t7 天前
DeepSeek总结的上下文理应归属于数据仓库
数据仓库
牛奶咖啡1310 天前
大数据Hadoop运维应用实践——HIVE与Hadoop实现整合_Hive的配置安装与使用
大数据·hive·hive的配置与安装·metastore服务的配置·hiveserver2服务配置·hive的常用sql操作·beeline的使用
Y38153266211 天前
3 种 SERP 数据 ETL 方案对比:实时 / 定时 / 流式
数据仓库·etl