当前位置: 首页 > 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…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC&#xf…...

算术操作符与类型转换:从基础到精通

目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...