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

相关推荐
躺柒9 小时前
读数据架构知识体系指南14数据编织
大数据·数据仓库·数据分析·数据湖·数据编织
卷毛迷你猪14 小时前
快速实验篇(B12)异常流量与刷单识别(方法论演示)
大数据·hive·hadoop·数据挖掘·聚类
卷毛迷你猪1 天前
快速实验篇(B07 )Session 会话化与序列
大数据·hive·hadoop
卷毛迷你猪1 天前
快速实验篇(B08)搜索词分析实战
大数据·hive·hadoop
一隅论数智2 天前
给AI Agent一颗“私域大脑“:本体增强的工程化之路
大数据·运维·数据仓库·人工智能·笔记·学习·政务
卷毛迷你猪2 天前
快速实验篇(B10)品类共现与关联规则实战
大数据·hive·hadoop
卷毛迷你猪2 天前
快速实验篇(B09)城市维度分析,均匀随机字段的识别与证明
大数据·hive·hadoop
卷毛迷你猪3 天前
快速实验篇(B06)页面单跳转化率
大数据·hive·hadoop
卷毛迷你猪3 天前
快速实验篇(B02)DWD 生产级升级
大数据·hive·hadoop
卷毛迷你猪3 天前
快速实验篇(B03) 用户行为漏斗与转化率
大数据·hive·hadoop