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

相关推荐
青云交11 小时前
Java 大视界 -- Java 大数据在智能教育学习成果评估体系完善与教育质量提升中的深度应用(434)
java·hive·spark·智能教育·学习成果评估·教育质量提升·实时评估
SelectDB技术团队13 小时前
面向 Agent 的高并发分析:Doris vs. Snowflake vs. ClickHouse
数据仓库·人工智能·科技·apache·知识图谱
德昂信息dataondemand14 小时前
数据仓库性能优化:从模型到调度的系统性实践
数据仓库·性能优化
天天向上杰14 小时前
小聊:银行数据仓库项目中 DEV → SIT → UAT → PRE-PROD → PROD
数据仓库
RestCloud1 天前
如何用ETL做实时风控?从交易日志到告警系统的实现
数据库·数据仓库·kafka·数据安全·etl·数据处理·数据集成
咨询QQ:4877392781 天前
探索Qt下的UI皮肤生成器:多风格与编译那些事儿
hive
QQ12958455042 天前
SSAS-检查字段里的不可见字符
数据库·数据仓库·数据分析
YiRan_Zhao2 天前
spark读取odps(maxcompute)数据配置idea
大数据·数据仓库·odps
lalala_lulu2 天前
Jsp的四种作用域(超详细)
java·开发语言·hive
俊哥大数据2 天前
【项目实战1】大数据项目开发案例---新闻资讯离线分析|实时分析|大数据仓库|推荐系统|数据可视化项目
数据仓库·hadoop·flink·spark·推荐系统·实时分析·离线分析