前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >问题排查--Impala查询Decimal数据为NULL,Hive查询正常

问题排查--Impala查询Decimal数据为NULL,Hive查询正常

作者头像
skyyws
发布于 2022-05-20 00:30:44
发布于 2022-05-20 00:30:44
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

目前,线上反馈一个问题:同一张表,使用Hive查询正常,但是使用Impala查询,返回的数据中,部分字段值为NULL。 我们使用impala执行了invalidate metadata xxx,排查了元数据不一致的问题,同时查看源文件,也排除了数据本身的问题。最终,通过在Impalad的web页面上查看该SQL的profile发现,其中存在如下的Errors:

通过查询相关的错误,我们发现官方对于这块有相应地解释: For text-based formats (text, RCFile, and SequenceFile tables), you can issue an ALTER TABLE … REPLACE COLUMNS statement to change the precision and scale of an existing DECIMAL column. As long as the values in the column fit within the new precision and scale, they are returned correctly by a query. Any values that do not fit within the new precision and scale are returned as NULL, and Impala reports the conversion error. Leading zeros do not count against the precision value, but trailing zeros after the decimal point do. 这段话主要的意思就是,如果通过alter table操作,修改了DECIMAL类型的precision和scale,如果实际值和新设置的DECIMAL不匹配的话,那么就会返回NULL。例如:如果数据是1.234,column定义是DECIMAL(4, 2),那么就会返回NULL。 我们可以通过如下的SQL进行简单的测试验证:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table text_decimals (x string);
insert into text_decimals values ("1"), ("2"), ("99.99"), ("1.234"), ("000001"), ("1.000000000");
alter table text_decimals replace columns (x decimal(4,2));
select * from text_decimals;

如果用Impala执行最后一行,那么返回的记录中,第四行和第六行都是NULL;如果用Hive执行,则第四行和第六行分别是1.23和1.00。感兴趣的同事可以自行测试一下。 目前Impala还没有提供参数项配置,可以像Hive一样返回一个四舍五入的近似值,因此我们需要保证在定义的时候,不会出现这种情况。但是在实际测试的过程中我们发现,对于1.234,如果column定义是DECIMAL(4, 5),那么查询可以正常返回1.234,这意味着Impala是不允许精度丢失。值得注意的是,如果我们先执行set abort_on_error=1,再执行select查询,那么SQL会直接返回失败,而不是NULL,如下所示:

官方链接参考:https://docs.cloudera.com/documentation/enterprise/5-16-x/topics/impala_decimal.html#decimal

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Hive改表结构的两个坑|避坑指南
Hive在大数据中可能是数据工程师使用的最多的组件,常见的数据仓库一般都是基于Hive搭建的,在使用Hive时候,遇到了两个奇怪的现象,今天给大家聊一下,以后遇到此类问题知道如何避坑!
数据社
2020/09/24
7350
SparkSQL与Hive metastore Parquet转换
Spark SQL为了更好的性能,在读写Hive metastore parquet格式的表时,会默认使用自己的Parquet SerDe,而不是采用Hive的SerDe进行序列化和反序列化。该行为可以通过配置参数spark.sql.hive.convertMetastoreParquet进行控制,默认true。
大数据学习与分享
2020/08/10
1.8K0
大数据篇---Impala学习第 1 部分 Impala概述第 2 部分 Impala 安装与⼊⻔案例第 3 部分 Imapla的架构原理第 4 部分 Impala的使用
invalidate metadata全量刷新,性能消耗较⼤,主要⽤于hive当中新建数据库或者数据库表的时候来进 ⾏刷新。
用户2337871
2020/11/25
1.1K0
大数据篇---Impala学习第 1 部分 Impala概述第 2 部分 Impala 安装与⼊⻔案例第 3 部分 Imapla的架构原理第 4 部分 Impala的使用
Impala MetaData问题
Impala的核心组件是Impalad,提供查询服务,catalogd缓存和获取元数据,statestored则负责把元数据更新到每个impalad节点上。
soundhearer
2020/10/16
1.4K0
Impala MetaData问题
客快物流大数据项目(七十二):Impala sql 语法
这里,IF NOT EXISTS是一个可选的子句。如果我们使用此子句,则只有在没有具有相同名称的现有数据库时,才会创建具有给定名称的数据库。
Lansonli
2022/12/18
1.4K0
客快物流大数据项目(七十二):Impala sql 语法
0794-5.16.2-Hive和Imapla查询decimal类型结果不同异常
根据异常重现部分的步骤,S2字段的数据类型是decimal(13,2)。精度只有2位,但是我们原始数据小数点后都是有3位小数。Hive在这里进行查询的时候会损失精度,打印结果。但是Impala在查询的时候,校验decimal类型会更严格,当前的原始数据精度超过了S2字段设定的数据类型的精度,所以直接返回为空。
Fayson
2020/08/14
1.3K0
大数据计算引擎:impala对比hive
Hive: 依赖于MapReduce执行框架,执行计划分成map->shuffle->reduce->map->shuffle->reduce…的模型。如果一个Query会被编译成多轮MapReduce,则会有更多的写中间结果。由于MapReduce执行框架本身的特点,过多的中间过程会增加整个Query的执行时间。
不吃西红柿
2022/07/29
5940
一文介绍hive与Impala的对比~
Impala是由Cloudera公司开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase上的PB级大数据,在性能上比Hive高出3~30倍。
大数据老哥
2021/10/11
4.2K0
一文介绍hive与Impala的对比~
0886-7.1.7-Hive1与Hive3中Decimal数据计算结果精度缺失问题分析
将集群从CDH升级到CDP后,Hive1与Hive3在Decimal精度的处理上发生了变化,导致两个版本的Hive在进行Decimal类型的数据计算时存在差异,主要体现在计算结果精度缺失。本篇文章主要从Hive1和Hive3对Decimal类型的处理上进行分析,进而详细解释精度缺失的原因。
Fayson
2022/09/27
2.5K0
0886-7.1.7-Hive1与Hive3中Decimal数据计算结果精度缺失问题分析
impala shell
9.显示查询的执行计划(与EXPLAIN语句输出相同)和每个查询语句底层的执行步骤的详细信息
chimchim
2022/11/13
9030
impala shell
Apache Impala(demo)
一、Apache Impala 1.Impala基本介绍 impala是cloudera提供的一款高效率的sql查询工具,提供实时的查询效果,官方测试性能比hive快10到100倍,其sql查询比sparkSQL还要更加快速,号称是当前大数据领域最快的查询sql工具, impala是参照谷歌的新三篇论文(Caffeine–网络搜索引擎、Pregel–分布式图计算、Dremel–交互式分析工具)当中的Dremel实现而来,其中旧三篇论文分别是(BigTable,GFS,MapReduce)分别对应我们即将学的HBase和已经学过的HDFS以及MapReduce。 impala是基于hive并使用内存进行计算,兼顾数据仓库,具有实时,批处理,多并发等优点。
Maynor
2022/11/30
4380
Apache Impala(demo)
客快物流大数据项目(七十):Impala入门介绍
impala是cloudera提供的一款高效率的sql查询工具,提供实时的查询效果,官方测试性能比hive快10到100倍,其sql查询比sparkSQL还要更加快速,号称是当前大数据领域最快的查询sql工具,
Lansonli
2022/12/18
1.1K0
客快物流大数据项目(七十):Impala入门介绍
Parquet格式表重命名列名后Hive查询列数据显示NULL异常分析
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢
Fayson
2018/07/12
4.1K0
硬核干货 | 基于Impala的网易有数BI查询优化总结
本文总结了Impala在网易有数BI应用场景下的最新查询优化经验,并探讨后续进一步优化的思路。文章首先简述有数BI + Impala在网易云音乐等业务使用时遇到的挑战,再介绍进行有数查询优化的重要工具——网易Impala管理服务器,最后结合实际业务问题讨论具体优化方法及下一步计划。
Spark学习技巧
2021/03/05
1.5K0
硬核干货 | 基于Impala的网易有数BI查询优化总结
Impala 详解
Impala各个组件、Sql语句分析步骤,优点缺点
俺也想起舞
2019/07/24
3.1K0
Impala基本原理
Impala是Cloudera开源的实时查询项目,目标是基于统一的SQL快速查询各种存储系统,如HDFS、Kudu、HBase等。Impala原意为 高角羚 ,该项目的特点就是 快速 。Impala舍弃MapReduce,基于C++实现针对硬件做了很多的优化,支持数据本地性。
洁儿
2023/11/21
5120
基于Impala的高性能数仓实践之执行引擎模块
Impala是Cloudera开发和开源的数仓查询引擎,以性能优秀著称。除了Apache Impala开源项目,业界知名的Apache Doris和StarRocks、SelectDB项目也跟Impala有千丝万缕的联系。笔者所在的网易数帆大数据团队,是最早一批将其作为分析型数仓查询引擎的团队,目前正基于Impala打造有数高性能数仓引擎。
从大数据到人工智能
2022/09/02
1.4K0
基于Impala的高性能数仓实践之执行引擎模块
[1130]hive表修复元数据
(tablename是你的表的名字)方法来进行修复元数据。 上面是一层分区的情况执行的。
周小董
2022/04/28
2.4K0
DECIMAL 数据处理原理浅析
MySQL 中当使用 SELECT 查询常数时,例如:SELECT 123456789.123; 是如何处理的?
GreatSQL社区
2023/02/23
6110
使用Apache Kudu和Impala实现存储分层
当为应用程序的数据选择一个存储系统时,我们通常会选择一个最适合我们业务场景的存储系统。对于快速更新和实时分析工作较多的场景,我们可能希望使用Apache Kudu,但是对于低成本的大规模可伸缩性场景,我们可能希望使用HDFS。因此,需要一种解决方案使我们能够利用多个存储系统的最佳特性。本文介绍了如何使用Apache Impala的滑动窗口模式,操作存储在Apache Kudu和Apache HDFS中的数据,使用此模式,我们可以以对用户透明的方式获得多个存储层的所有优点。
九州暮云
2019/08/21
3.9K0
相关推荐
Hive改表结构的两个坑|避坑指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验