Hive内表修改字段类型及注意事项

更改 HIVE 表字段数据类型有哪些注意事项? 更改HIVE 表字段数据类型有哪些注意事项? 1. 使用 HIVE 表的常见规范 2. 更改HIVE 表字段数据类型的注意事项 3. 相关JIRA 阅读详情

1 Hive表的前置说明

例如,我们需要一个t1表,在创建的时候,理所当然的认为了 hit_count 是一个整型类型创建了一个内表。

CREATE TABLE t1 (
  ...
  hit_count int
) PARTITIONED BY(
  statistical string
) STORED AS PARQUET 
LOCATION 'hdfs://nnCluster/warehouse/hive/yore.db/t1';

之后开始通过其他ETL工具开始将数据汇入这个表,每日会自动创建一个分区目录,然后根据表schema信息,在HDFS的目录下生成PARQUET文件。

业务查询这个表正常,一切似乎都在正常运行。

2 问题发生了

某天突然业务说某个查询t1表的任务异常了,其他却正常。

经过排查发现其他t1表正常的查询都没有涉及到 hit_count 字段,而报错的是查询了 hit_count 字段后发生的。

进一步排查,发现了问题,HDFS中汇入时生成的 PARQUET文件中 hit_count 字段是字符串类型,而Hive表中 hit_count 字段是整型。

在所难免了,这个问题就被你遇到了。

3 解决

因为t1表已经保存了很多数据(例如1年多的),因此首先肯定不能让汇入方进行改动了,要不然历史数据就无法查询了。所以PARQUET只能的结构只能这样了,将错就错吧, hit_count 就不得不当作字符串类型了。

剩下能解决的,就只有修改Hive表中 hit_count 字段类型。

3.1 方案一:直接修改字段类型

ALTER TABLE t1 CHANGE COLUMN hit_count hit_count string

想到能有如此简单的方法解决问题,就非常开心😊。
不过实际上如果表分区下已经有PARQUET数据了,类型存在不兼容时会执行失败。
ALTER TABLE Type ERROR

3.2 方案二:通过修改内表LOCATION,删除旧表,重建新表

注意:如果HMS有多个,在删除旧表时,务必一定一定一定要保证每一个HMS都已经同步/更新了元数据后再操作,否则就会有一次深刻的教训😭,可以多等一会。

-- 1 修改原内表的存储路径
-- 路径可以是任意的,这里是临时的,
-- 其实就是为了把原内表关联的HDFS存储路径解离
ALTER TABLE t1 SET LOCATION "hdfs://nnCluster/tmp/tmp_t1";

-- 2 查看下建表信息,确保内表的存储路径(LOCATION)已经改到了新的临时路径了
SHOW CREATE TABLE t1;

-- 3 可以放心的删除旧表了
DROP TABLE t1;

-- 4 建新的业务内表,
-- 此时字段类型可以放心的修改为需要的类型了(这里为string类型)
-- LOCATION指向原表的存储路径
CREATE TABLE t1 (
  ...
  hit_count string
) PARTITIONED BY(
  statistical string
) STORED AS PARQUET 
LOCATION 'hdfs://nnCluster/warehouse/hive/yore.db/t1';

-- 5 刷新分区元数据
MSCK REPAIR TABLE t1;

-- 6 查询验证
select * from t1 where statistical='2025-11-21' limit 5;

3.3 方案三:将内表修改为外表,删除旧表,重建新表

注意:如果HMS有多个,在删除旧表时,务必一定一定一定要保证每一个HMS都已经同步/更新了元数据后再操作,否则就会多一次深刻的教训😭,可以多等一会。

-- 1 内表修改为外表
ALTER TABLE t1 SET TBLPROPERTIES ("EXTERNAL"="TRUE");

-- 2 查看下建表信息,确保内表已修改为外表
SHOW CREATE TABLE t1;

-- 3 可以放心的删除旧表了
DROP TABLE t1;

-- 4 重建业务内表,
-- 此时字段类型可以放心的修改为需要的类型了(这里为string类型)
-- LOCATION指向原表的存储路径
CREATE TABLE t1 (
  ...
  hit_count string
) PARTITIONED BY(
  statistical string
) STORED AS PARQUET 
LOCATION 'hdfs://nnCluster/warehouse/hive/yore.db/t1';

-- 5 刷新分区元数据
MSCK REPAIR TABLE t1;

-- 6 查询验证
select * from t1 where statistical='2025-11-21' limit 5;
Hive SQL 修改表的字段类型、名字、注释 操作格式: ALTER TABLE tableName(表名) CHANGE COLUMN 原字段名字 新字段名字 字段类型 COMMENT '名称- 新的字段备注' 操作样例: ALTER TABLE kylin.kylin_premium_quit_actual CHANGE COLUMN sub_point_id sub_point_id String COMMENT '子账户... 阅读详情

相关推荐

DC-DC BUCK电路 PCB 布局布线 5 要点:以 XL4015 12V转5V 为例解析噪声控制

本文以XL4015 12V转5V降压电路为例,详细解析DC-DC BUCK电路PCB布局布线的5个关键要点,重点探讨噪声控制策略。通过功率回路最小化、热管理与接地优化、电感电容布局、反馈网络防干扰设计以及实测验证技巧,帮助工程师实现高效稳定的电源设计,显著降低输出纹波和电磁干扰。

weixin_29165725的博客 368

hive修改字段及字段类型

hive修改字段类型语句:alter table 表名 change column 原字段名 新字段名 字段类型; alter table user_chain change column u_register u_registe date;(u_register原类型为string类型) 这样修改会报一个错误: FAILED: Execution Error, return code 1 fro...

sunqingok的博客 6万+

STM32平台下FreeModbus TCP协议栈集成指南

深入讲解在STM32平台如何移植和配置freemodbus协议栈,实现TCP通信功能。结合嵌入式开发细节,帮助开发者快速掌握freemodbus的应用与调试技巧。

weixin_36001279的博客 1142

hive修改字段类型

alter table 表名 change column 原字段名 现字段名 字段类型

along 1万+

【数据攻略】字节面试真题(含答案)+100道面试题库

数据攻略

qq_40002713的博客 4102

国内免魔法接入Grok API,打造智能QQ机器人实战指南

大型语言模型(LLM)通过API接口为开发者提供了强大的自然语言处理能力,其核心原理是基于海量数据训练的深度神经网络,能够理解和生成类人文本。这一技术价值在于显著降低了AI应用开发门槛,使开发者无需从零训练模型即可快速集成智能对话、内容生成等功能。在即时通讯、智能客服、自动化工具等应用场景中,LLM API能有效提升交互体验与效率。本文聚焦于如何通过稳定的第三方API服务,绕开网络访问限制,将xAI推出的Grok模型接入国内网络环境,并结合NoneBot2框架与go-cqhttp,实现一个功能完整的智能QQ

weixin_30607125的博客 317

hive修改表字段数据类型

注:在执行操作时,你需要确保数据类型转换是安全的,即数据能够在新的数据类型下准确地表示。:在更改数据类型之前,请确保数据的值与新数据类型兼容。:如果你的应用程序依赖于这个Hive表,更改数据类型可能需要你更新应用程序的代码。:如果你正在修改一个分区表的列类型,并且希望这个更改应用到所有分区上,可以使用。:在生产环境中应用更改之前,在测试环境中进行测试以确保更改不会破坏现有功能。:更改数据类型可能会影响查询性能,特别是在大型表上。:在进行任何结构更改之前,建议备份你的数据。(如果列名不变,可以保持相同),

weixin_45108435的博客 5335

小龙虾 OpenClaw 权限全攻略:轻松激活 elevated (最新版 OpenClaw 自动化任务降智、无权限、无法执行sudo等系统命令、提升 elevated 权限的解决方案)

升级小龙虾 OpenClaw 后权限不足?elevated 报错?📛 本文教你如何正确配置 OpenClaw 权限💻,让自动化任务顺利执行 🚀

XiaoqiangClub的博客 732

hive 分区表添加,修改,删除字段的坑

hive在修改表的字段类型时使用语法: ALTER TABLE table_name PARTITION partition_spec] CHANGE COLUMN] col_old_name col_new_name column_type COMMENT col_comment] FIRST|AFTER column_name] CASCADE|RESTRICT]; --新增字段 ...

Jackie 的博客 7678

rk3588 LightSensor适配从驱动到应用层

本文详细介绍了在RK3588平台上实现光感驱动的开发流程。主要包括:1) 在设备树中配置I2C5接口挂载光感设备;2) 编写内核驱动代码实现光感数据采集;3) HAL层通过ioctl与驱动交互;4) 在BoardConfig.mk中启用相关宏定义;5) Framework层通过AutomaticBrightnessController实现自动亮度调节算法;6) 应用层可通过监听系统设置获取光感变化并调整屏幕亮度。整个流程涵盖了从底层驱动到上层应用的完整实现方案,重点解决了光感设备注册、数据采集传输和自动亮度

tzj1058756809的博客 448

Autosar MCAL-S32K324 Fee配置-基于EB

Autosar MCAL S32K324 Fee配置详解

赞的博客 1544

Hive_SQL记录

1.建表 CREATE TABLE IF NOT EXISTS all_type_table ( `c_in` INT, `c_bi` BIGINT, `c_st` STRING, `c_do` DOUBLE, `c_fl` FLOAT, `c_de` DECIMAL(20,10), `c_da` DATE, `c_ts` TIMESTAMP, `c_ba` BINARY, `c_bl` BOOLEAN ...

Mr_JK的专栏 252

C# Modbus协议全解析 万字长文|RTU/TCP/UDP完整实战(寄存器映射+多从站组网+NModbus4工业级代码)

你做C#工业上位机开发,Modbus协议是绕不开的终极核心,没有之一!Modbus是由施耐德在1979年发布的工业级串行通信协议,经过40余年的发展,已经成为工业自动化领域的通用标准协议—— 小到温湿度传感器、智能电表、小型PLC,大到变频器、伺服驱动器、DCS集散控制系统,99%的工业设备都原生支持Modbus协议(RTU/TCP二选一,多数全支持)。很多开发者觉得Modbus「知识点杂、协议分支多、组网难」,本质是只掌握了零散的读写代码,没吃透。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1062

hivesql修改字段类型_MySql修改数据表的基本操作(DDL操作)

1.查看数据库的基本语句:show databases;2.选择相应的数据库进入语法:use 数据库名;3.查看数据库中的表语法:show tables;4.查看表的基本结构语句:desc 表名;5.修改表名:alter table 旧表名 rename to 新表名;6.修改字段的数据类型:alter table 表名 modify 字段名 数据类型;7.修改字段名:alter table 表名...

weixin_34803929的博客 580

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

语法和碎片

20240611:sr中concat_ws和spark中用法一样spark中:concat_ws 的优化用法with test_4 as ( – 上面已经限制有意义才取了,再把已经发散打开的,再聚合回来selectsr中的分组时 用 group_concat 时,null会自动去除,同时用逗号隔开如果需要去重的话,用:例:开窗位移 lead是上 lag是下移和 concat_ws。

m0_63306368的博客 1279

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

hive 修改表名_hive表新增字段或者修改字段

1. hive表操作1. 修改表字段的数据类型或者修改表字段名字#如果表是外部表,需要先修改为内部表 alter table 数据库名.表名set tblproperties('EXTERNAL' = 'FALSE'); ALTER TABLE 数据库名.表名 CHANGE COLUMN 字段名 新的字段名(如果不变就保持原字段) 字段类型(若不变就采用原来的字段) COMMENT '新的字段备...

weixin_39751076的博客 7687

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

hive 修改表字段名

Hive 修改表字段名的过程 在数据处理的过程中,我们有时需要对Hive表中的字段名进行修改。虽然这是一个相对简单的操作,但我们还是需要了解其步骤和注意事项。本文将为刚入行的小白详细讲解如何在Hive中修改表字段名,并提供相应的代码示例。 流程概览 我们可以将整个流程概括为以下几个步骤: 步骤 描述 1 确定...

weixin_34457338的博客 836

Hive如何删除、添加、修改表中的字段

1、添加字段: alter table table_name add columns (column_1 string,column_2 string) 添加之后字段由于hive底层是文件和系列化的设计因此查数据会发现新增的列在所有已有列的后面 2、修改字段 alter table table_name change 已有列 修改名称 类型 comment ''; 3、删除列 Hive不能直接删除列,不然底层系列化就乱了,我们可以通过replace来替换字段,达到同样的效果 alter table ta

别人笑我太疯癫,我笑他人看不穿。 3万+

【大数据入门 | Hive】DDL数据定义语言(表TABLE)

管理表意味着Hive会完全接管该表,包括元数据和HDFS中的数据。指定文件格式,常用的文件格式有,textfile(默认值),sequence file,orc file、parquet file等等。该语法允许用户利用select查询语句返回的结果,直接建表,表的结构和查询语句的结构保持一致,且保证包含select查询语句放回的内容。外部表通常可用于处理其他工具上传的数据文件,对于外部表,Hive只负责管理元数据,不负责管理HDFS中的数据文件。临时表,该表只在当前会话可见,会话结束,表会被删除。

2301_80912559的博客 1928

hive建表及表操作

HIVE 建表及对表基本操作 建表的三种形式 1.直接建表 create [external] table [if not exists] tab_name ( row_1 type, row_2 type ) partition by (row_3 type,type_4 type ) row format delimited fields terminated by ’ a’ sto...

cysgdsg的博客 1260

数据仓库Hive的分区表与分桶表

一、分区表 分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。 所谓的分区表其实和表中的字段没什么区别,包括其使用,唯一的区别就是在于向hdfs写表数据的时候,会以分区值先在表的hdfs目录下创建一个分区目录,再添加数据。 我们举一个具体的案例来讲解一下: ...

阳哥的博客 2488

1.Hive表新增字段,一次讲明白

Hive表新增字段可以说是Hive中最常见的操作,但有些开发人员在新增字段的时候总会遇到问题,这里进行详细的讲解和演示。

每天进步一点点 1万+

摸鱼大数据——Hive表操作——分桶表

分桶表特点: 会产生分桶文件。效率上注意: 查询数据的时候如果使用了分桶字段那么会提升数据查询效率(数据过滤where、join、分组、抽样查询);否则会进行全表扫描分桶与分区的区别:1- 分桶字段必须是原有的字段名称2- 分桶产生的是多个文件;而分区产生的是多级目录3- 分区和分桶可以同时用在同一张表中。但是只能先分区,再分桶;不能先分桶再分区,因为我们不能在文件中在去建立文件夹。

weixin_65694308的博客 1796

Hive 表结构修改指南:添加字段、修改类型与删除分区的 HQL

【代码】Hive 表结构修改指南:添加字段、修改类型与删除分区的 HQL。

2501_94072676的博客 696

Hive SQL语言: DDL建库、建表

Spark是大数据体系的明星产品,是一款高性能的分布式内存迭代计算框架,可以处理海量规模的数据。下面就带大家一起来开始学Spark!

黑马程序员官方博客 462

Hive 集成 ElasticSearch

hive建立映射表,将批量数据写入es

XXXL___Huo的博客 1079
上一篇: 一个实用的 Maven管理本地小工具
下一篇: Deepin 日常使用问题汇总与解决:应用打不开、WorkBuddy 升级实战
Yore Yuen
博客等级 码龄9年 8646粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yore Yuen

你的支持认可是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值