当前位置: 首页 > news >正文

Cannot inspect org.apache.hadoop.hive.serde2.io.HiveDecimalWritable 问题分析处理

报错; org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.UnsupportedOperationException: Cannot inspect org.apache.hadoop.hive.serde2.io.HiveDecimalWritable

该问题常见于parquet格式hive表查询时,一般原因为hive表对应数据文件元数据对应格式与hive表定义格式不匹配导致。
可根据查看parquet文件信息验证parquet文件元数据格式与hive表定义元数据进行比对,将修改Hive表定义字段类型即可解决
调整到一致的方法:
1、修改hive表的字段类型 注意如果需要级联修改需要使用关键字cascade
ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUMN] col_old_name col_new_name column_type [CASCADE|RESTRICT];
2、修改生成parquet的字段类型。

查看hive元数据:
CREATE TABLE ods_device_andon_new.md_route_process_cfg(
id string COMMENT ‘??’,
md_route_version_id string COMMENT ‘???ID’,
md_process_id string COMMENT ‘???ID’,
md_section_id string COMMENT ‘???ID’,
md_check_time_rule_id string COMMENT ‘???ID’,
is_wo_start string COMMENT ‘???0???1?’,
is_wo_finished string COMMENT ‘???0???1?’,
md_assess_rule_id string COMMENT ‘???ID’,
is_kpi_finished string COMMENT ‘???0???1?’,
is_warehouse_input string COMMENT ‘???0???1?’,
is_shipout string COMMENT ‘???,?0???1?’,
max_retest decimal(10,0) COMMENT ‘???’,
sys_org_id string,
project_code string COMMENT ‘???’,
created_dt timestamp COMMENT ‘???’,
creator string COMMENT ‘???’,
last_edited_dt timestamp COMMENT ‘???’,
last_editor string COMMENT ‘???’,
ap_mainversion string COMMENT ‘???’,
db_mainversion string COMMENT ‘???’,
timezone string,
is_invalid string COMMENT ‘???’,
invalid_dt timestamp COMMENT ‘???’,
invalid_reason string COMMENT ‘???’,
description string,
packtype_dic string COMMENT ‘???:SN/TRAY/CARTON/PALLET’,
environment_parameters string COMMENT ‘???-JSON?? ??? IP MAC ?? ?? ?? WO PN ??? ???’,
service_code string COMMENT ‘???’,
sourceinteractioncode string)
ROW FORMAT SERDE
‘org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe’
STORED AS INPUTFORMAT
‘org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat’
OUTPUTFORMAT
‘org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat’
LOCATION
‘hdfs://vnha/user/hive/warehouse/ods_device_andon_new.db/md_route_process_cfg’
TBLPROPERTIES (
‘transient_lastDdlTime’=‘1728580150’)

查看 parquet 文件 schema
下载 parquet-tools-1.9.0.jar
—— https://mvnrepository.com/artifact/org.apache.parquet/parquet-tools/1.11.2
—— https://mvnrepository.com/artifact/org.apache.parquet/parquet-tools/1.9.0
hadoop jar ./parquet-tools-1.9.0.jar schema hdfs_file_path

不正常表:
hdfs dfs -ls /user/hive/warehouse/ods_device_andon_new.db/md_route_process_cfg/
Found 2 items
-rw-r–r-- 3 hive supergroup 0 2024-10-11 01:03 /user/hive/warehouse/ods_device_andon_new.db/md_route_process_cfg/_SUCCESS
-rw-r–r-- 3 hive supergroup 7310 2024-10-11 01:03 /user/hive/warehouse/ods_device_andon_new.db/md_route_process_cfg/part-00000-23c35f91-fc2b-4dba-aada-4caf5b49231e-c000.snappy.parquet
查看Parquet文件格式:
hadoop jar /home/sunxy/parquet-tools-1.9.0.jar schema /user/hive/warehouse/ods_device_andon_new.db/md_route_process_cfg/part-00000-23c35f91-fc2b-4dba-aada-4caf5b49231e-c000.snappy.parquet

正常表:
hdfs dfs -ls /user/hive/warehouse/ods_device_andon_new.db/md_shift_detail/000000_0
-rwxr-xr-x 3 hive hive 7152 2024-10-11 00:08 /user/hive/warehouse/ods_device_andon_new.db/md_shift_detail/000000_0
hadoop jar /home/sunxy/parquet-tools-1.9.0.jar schema /user/hive/warehouse/ods_device_andon_new.db/md_shift_detail/000000_0

在使用insert into table时,每次会再添加一份文件000000_0
clustered by语句主要是控制生成的part-0000*的文件个数 ,分桶。

WARNING: Use “yarn jar” to launch YARN applications.
message spark_schema {
optional fixed_len_byte_array(9) ID (DECIMAL(20,0));
optional fixed_len_byte_array(9) MD_ROUTE_VERSION_ID (DECIMAL(20,0));
optional fixed_len_byte_array(9) MD_PROCESS_ID (DECIMAL(20,0));
optional fixed_len_byte_array(9) MD_SECTION_ID (DECIMAL(20,0));
optional fixed_len_byte_array(9) MD_CHECK_TIME_RULE_ID (DECIMAL(20,0));
optional fixed_len_byte_array(1) IS_WO_START (DECIMAL(1,0));
optional fixed_len_byte_array(1) IS_WO_FINISHED (DECIMAL(1,0));
optional fixed_len_byte_array(9) MD_ASSESS_RULE_ID (DECIMAL(20,0));
optional fixed_len_byte_array(1) IS_KPI_FINISHED (DECIMAL(1,0));
optional fixed_len_byte_array(1) IS_WAREHOUSE_INPUT (DECIMAL(1,0));
optional fixed_len_byte_array(1) IS_SHIPOUT (DECIMAL(1,0));
optional fixed_len_byte_array(16) MAX_RETEST (DECIMAL(38,0));
optional fixed_len_byte_array(9) SYS_ORG_ID (DECIMAL(20,0));
optional binary PROJECT_CODE (STRING);
optional int96 CREATED_DT;
optional binary CREATOR (STRING);
optional int96 LAST_EDITED_DT;
optional binary LAST_EDITOR (STRING);
optional binary AP_MAINVERSION (STRING);
optional binary DB_MAINVERSION (STRING);
optional binary TIMEZONE (STRING);
optional fixed_len_byte_array(1) IS_INVALID (DECIMAL(1,0));
optional int96 INVALID_DT;
optional binary INVALID_REASON (STRING);
optional binary DESCRIPTION (STRING);
optional binary PACKTYPE_DIC (STRING);
optional binary ENVIRONMENT_PARAMETERS (STRING);
optional binary SERVICE_CODE (STRING);
optional binary SOURCEINTERACTIONCODE (STRING);
}

用 Hive 生成数据的时候,是没有 _SUCCESS 文件的。
但是我们在跑完 MR 或者 Spark 程序时,会发现数据输出目录一般都会有一个 _SUCCESS 的空文件。这个 _SUCCESS 空文件用来表示该任务运行成功。
举个例子,比如我们有两个 Spark 任务:A 任务和 B 任务。B 任务依赖于 A 任务,也就是说 B 任务要根据 A 任务的结果再判断是否运行。这时我们就可以根据 A 任务的输出目录下是否有 _SUCCESS 文件来判断 A 任务是否运行成功。
但是在用 DataX 读取 HDFS 中的数据时,有 _SUCCESS 文件会使任务报错,因此可以在 Spark 代码中加以限制,不生成 _SUCCESS 文件即可。

在 Spark 的 Driver 端参数里加上如下参数即可。
sc.hadoopConfiguration.set(“mapreduce.fileoutputcommitter.marksuccessfuljobs”, “false”)
或者在 Spark SQL 中设置如下参数:
set mapreduce.fileoutputcommitter.marksuccessfuljobs = false;

相关文章:

Cannot inspect org.apache.hadoop.hive.serde2.io.HiveDecimalWritable 问题分析处理

报错; org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.UnsupportedOperationException: Cannot inspect org.apache.hadoop.hive.serde2.io.HiveDecimalWritable 该问题常见于parquet格式hive表查询时,一般原因为hive表对应数据文件元数据对应格式与…...

电子取证新视角:USB键盘流量提取密码方法研究与实现

0x01 引言 在当今数字化时代,USB设备的广泛使用使得信息安全和电子取证领域面临着新的挑战与机遇。特别是USB键盘,作为一种常见的输入设备,其流量中可能包含用户输入的敏感信息,如密码和其他私人数据。因此,研究USB键…...

Tongweb7049m4+THS6010-6012配置故障轉移+重試机制(by lqw)

使用场景 1.ths代理tongweb多套后端,假如有其中一套tongweb因为服务器重启或者宕机后没有及时启动,导致ths一直轮询在这个出故障的节点上。 2.即使在tongweb重启了,有的应用启动也需要一定的时间,这个时候只是启动了应用端口&…...

在线客服系统网站源码-网页聊天客服实现代码

源码简介 在线客服系统 – 网上客服系统,在线客服系统网站源码。 消息预知功能就是别人在聊天框打字你都能看到 1.新增客服坐席消息互动,客服之间可以互相接收消息,可以智能分配 2.新增消息预知功能,可提前预知访客已输入未发…...

JioNLP:一款实用的中文NLP预处理工具包

一、什么是 JioNLP? JioNLP是一个面向NLP开发者的工具包,提供了常见的中文文本预处理、解析等功能,使用简单、高效准确、无需配置,可极大加快NLP项目的开发进度。 主要特点包括: 代码开源,使用MIT协议功能丰富,涵盖多个NLP预处理需求使用简单,无需复杂配置即可调用准确高效…...

GR-ConvNet论文 学习笔记

GR-ConvNet 文章目录 GR-ConvNet前言一、引言二、相关研究三、问题阐述四、方法A.推理模块B.控制模块C.模型结构D.训练方法E.损失函数 五、评估A.数据集B.抓取评判标准 六、实验A.设置B.家庭测试物体C.对抗性测试物体D.混合物体 七、结果A.康奈尔数据集B.Jacquard数据集C.抓取新…...

windows环境批量删除指定目录下的全部指定文件

写在开头: 1. 涉及文件删除,先在小范围内测试(更改D:\扫描文件路径) 2. 命令会递归该目录下的所有文件 命令: forfiles /p D:\ /s /m _maven.repositories /c "cmd /c del path"解释: /p D:\ …...

水深探测仪的作用和使用方法

在水域救援的行动里,救援人员时刻面临着复杂多变、充满未知的水域状况。当接到救援任务奔赴现场,那片需要涉足的水域就像一个神秘莫测的异世界,挑战着所有人的认知与勇气。 水深探测仪作为一种专用于测量水域深度的设备,通过声波和…...

Leetcode 搜索插入位置

这段代码的核心思想是 二分查找,用于在一个已经排序的数组中查找目标值的位置。如果目标值存在于数组中,返回它的索引;如果目标值不存在,返回它按顺序应该插入的位置。 算法思想步骤: 定义左右边界: 我们使…...

jsp怎么实现点赞功能

在JSP中实现点赞功能通常涉及前端页面的设计、后端逻辑处理以及数据存储。为了实现点赞功能,你可以使用以下步骤: 前端(JSP页面)设计 前端部分包括显示点赞按钮,并通过Ajax发送点赞请求,以避免页面刷新。 …...

取消microsoft edge作为默认浏览器 ,修改方法,默认修改不了的原因

将Microsoft Edge或其它浏览器设置为默认浏览器,可以尝试以下方法来解决此问题: 一, 通过浏览器设置修改:打开Microsoft Edge浏览器,单击右上角的“更多”按钮,然后选择“设置”。在设置页面左侧找到“默认…...

C++面试速通宝典——17

283. Nginx负载均衡算法 ‌‌‌‌  Nginx支持多种负载均衡算法。 轮询(Round Robin):默认算法,按顺序逐个分配请求到后端服务器。加权轮询(Weighted Round Robin):与轮询类似,但…...

10、论文阅读:基于双阶对比损失解纠缠表示的无监督水下图像增强

Unsupervised Underwater Image Enhancement Based on Disentangled Representations via Double-Order Contrastive Loss 前言引言方法介绍解耦框架多尺度生成器双阶对比损失双阶对比损失总结损失函数实验前言 在水下环境中拍摄的图像通常会受到颜色失真、低对比度和视觉质量…...

Git配置token免密登录

配置token免密登录 如果不用ssh免密登录,还有其他基于Token那得免密登录方法吗? 2021年开始,github就不能使用密码登录git了,需要使用token作为密码登录,需要自己在setting中创建。 那么每次都需要我手动输入token密…...

活动预告|博睿数据将受邀出席GOPS全球运维大会上海站!

第二十四届 GOPS 全球运维大会暨研运数智化技术峰会上海站将于2024年10月18日-19日在上海中庚聚龙酒店召开。大会将为期2天,侧重大模型、DevOps、SRE、AIOps、BizDevOps、云原生及安全等热门技术领域。特设了如大模型 运维/研发测试、银行/证券数字化转型、平台工程…...

Flutter技术学习

以下内容更适用于 不拘泥于教程学习,而是从简单项目入手的初学者。 在开始第一个项目之前,我们先要了解 两个概念。 Widget 和 属性 Widget 是用户界面的基本构建块,可以是任何 UI 元素。属性 是 widget 类中定义的变量,用于配…...

Kubernetes网络通讯模式深度解析

Kubernetes的网络模型建立在所有Pod能够直接相互通讯的假设之上,这构建了一个扁平且互联的网络空间。在如GCE(Google Cloud Engine)等云环境中,这一网络模型已预先配置,但在自建的Kubernetes集群中,我们需要…...

SBTI科学碳目标是什么?有什么重要意义

SBTI(Science Based Targets initiative),即科学碳目标倡议,是一个由全球环境信息研究中心(CDP)、联合国全球契约组织(UNGC)、世界资源研究所(WRI)和世界自然…...

英特尔新旗舰 CPU 将运行更凉爽、更高效,适合 PC 游戏

英特尔终于解决了台式机 CPU 发热和耗电的问题。英特尔的新旗舰 Core Ultra 200S 系列处理器将于 10 月 24 日上市,该系列专注于每瓦性能,比之前的第 14 代芯片运行更凉爽、更高效。这些代号为 Arrow Lake S 的处理器也是英特尔首款内置 NPU(…...

MySQL 启动失败 (code=exited, status=1/FAILURE) 异常解决方案

目录 前言1. 问题描述2. 查看错误日志文件2.1 确认日志文件路径2.2 查看日志文件内容 3. 定位问题3.1 问题分析 4. 解决问题4.1 注释掉错误配置4.2 重启 MySQL 服务 5. 总结结语 前言 在日常运维和开发过程中,MySQL数据库的稳定运行至关重要。然而,MySQ…...

通信工程学习:什么是RIP路由信息协议

RIP:路由信息协议 RIP(Routing Information Protocol)路由信息协议是一种基于距离矢量算法的内部网关协议(IGP),主要用于在自治系统(AS)内部进行路由信息的交换和传播。以下是关于RI…...

SQL调优指南与高级技巧:打造高效数据库查询

在当今数据驱动的世界中,SQL(结构化查询语言)作为与关系型数据库交互的主要语言,其性能直接影响着整个应用系统的响应速度和用户体验。本文将深入探讨SQL调优的方法论和高级技巧,帮助开发者和数据库管理员提升查询效率…...

实惠又好用的云手机推荐【高性价比云手机盘点】

随着云计算技术的蓬勃发展,云手机已经成为现代工作和生活中的重要工具。面对种类繁多的云手机产品,用户往往在选择时关注价格与性能的平衡。今天,我们就为大家推荐几款性价比高、实用性强的云手机,帮助你轻松选择到最适合的产品。…...

Pear Admin Flask Master开启步骤

由于我学的是数控技术,对编程是从小白自学的,在运行pearflask时一直没搞懂初始化数据库这一步是在哪里执行的,网上查了很多资料都没写,找了一天半的资料后终于查到了。 使用系统:Windows 10 Python版本:Py…...

知识图谱入门——8: KG开发常见数据格式:OWL、RDF、XML、GraphML、JSON、CSV。

在知识图谱开发中,数据格式和语义表达至关重要。本文将详细论述OWL、RDF、XML、GraphML、JSON、CSV等格式的特点、优缺点及适用场景,帮助读者全面理解这些数据结构及其在知识图谱中的应用。 专栏:知识图谱:从0到 ∞ 文章目录 0. 对…...

离线使用k8s部署项目

docker的安装与完全卸载(亲测可用) docker的安装与完全卸载 然后配置镜像加速器 vi /etc/docker/daemon.json 将找到的镜像仓库地址写入 具体内容可以参考此网站时刻更新镜像源仓库 然后保存退出 执行 systemctl daemon-reloadsystemctl restart…...

【CF2021E】Digital Village(All Version)

题目 给你一张 n n n 个点 m m m 条边的无向图,有 p p p 个关键点。你需要选择 k k k 个点染黑,使得这 p p p 个关键点到这 k k k 个黑点的代价和最小。定义代价为两点之间边权最大的边的最小值。 你需要求出 k 1,2,…,n 的所有答案 E1 n,m,p&l…...

[C++]使用纯opencv部署yolov11目标检测onnx模型

yolov11官方框架:https://github.com/ultralytics/ultralytics 【算法介绍】 在C中使用纯OpenCV部署YOLOv11进行目标检测是一项具有挑战性的任务,因为YOLOv11通常是用PyTorch等深度学习框架实现的,而OpenCV本身并不直接支持加载和运行PyTor…...

【Golang】Go 语言中的 time 包详解:全面掌握时间处理与应用

在 Go 语言中,time 包提供了强大的时间处理功能,适用于各种场景:获取当前时间、格式化和解析时间、计算时间间隔、设置定时器、处理超时等。在开发过程中,熟练掌握 time 包能够帮助我们轻松处理时间相关的操作,尤其是定…...

MySQL联合索引、索引下推Demo

1.联合索引 测试SQL语句如下:表test中共有4个字段(id, a, b, c),id为主键 drop table test;#建表 create table test(id bigint primary key auto_increment,a int,b int,c int )#表中插入数据 insert into test(a, b, c) values(1,2,3),(2,3,4),(4,5,…...