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

相关推荐
走遍西兰花.jpg2 小时前
hive如何使用python脚本
数据仓库·hive·hadoop·python
德彪稳坐倒骑驴2 小时前
Hive电商分析项目 Azkaban自动化运行
hive·hadoop·自动化
yumgpkpm6 小时前
Cloudera CDP/CMP华为鲲鹏版下 Spark应用加速,华为昇腾芯片的实用配置过程
hive·hadoop·elasticsearch·flink·kafka·hbase·cloudera
沃达德软件6 小时前
智慧监管新形态:科技赋能
大数据·数据仓库·人工智能·科技·数据库架构
青云交7 小时前
Java 大视界 -- Java+Spark 构建离线数据仓库:分层设计与 ETL 开发实战(445)
java·数据仓库·spark·分层设计·java+spark·离线数据仓库·etl 开发
zgl_200537797 小时前
源代码:ZGLanguage 解析SQL数据血缘 之 显示 WITH SQL 结构图
大数据·数据库·数据仓库·sql·数据治理·etl·数据血缘
m0_748252387 小时前
ervlet 编写过滤器
数据仓库·hive·hadoop
xiaomici1 天前
SAC Planning 高级计算公式-2
数据仓库
沃达德软件1 天前
智慧政工中心功能解析
大数据·数据仓库·数据库开发·数据库架构·etl工程师
温暖小土1 天前
ClickHouse vs Apache Doris:2026年实时OLAP数据库选型深度解析
数据库·数据仓库·clickhouse·apache