Hive新增/变更字段后,Hive metastore与Hive tblproperties缓存的spark schema不一致处理

一、创建测试表

CREATE TABLE `ittemp`.`zxh_test1` (

`col1` VARCHAR(64) COMMENT '测试字段1',

`col2` INT COMMENT '测试字段2',

`col3` DECIMAL(16,2) COMMENT '测试字段3'

)

stored as parquet

PARTITIONED BY (`dt` varchar(8) comment '分区')

COMMENT '测试表1';

二、插入测试数据

insert overwrite `ittemp`.`zxh_test1` partition(dt='20220707') values ('a',1,1.1);

三、spark查询测试

select * from `ittemp`.`zxh_test1`;

四、通过hive新增字段

alter table `ittemp`.`zxh_test1` add columns ( `COL4` VARCHAR(40) comment '测试字段4');

五、spark查询测试(报hive metastore不一致)

select * from `ittemp`.`zxh_test1`;

六、通过hive更新TBLPROPERTIES

1、通过hive执行show create table `ittemp`.`zxh_test1`查看tblproperties信息

注:一般关注'spark.sql.sources.schema.part.0'参数值,当表字段过多时,可能存在 'spark.sql.sources.schema.part.1'、'spark.sql.sources.schema.part.2'等多个,需要关注涉及更新的字段信息在哪个参数里

2、 更新tblproperties值

alter table `ittemp`.`zxh_test1` set TBLPROPERTIES

(

'spark.sql.sources.schema.part.0'='{"type":"struct","fields":[{"name":"col1","type":"varchar(64)","nullable":true,"metadata":{"comment":"测试字段1"}},{"name":"col2","type":"integer","nullable":true,"metadata":{"comment":"测试字段2"}},{"name":"col3","type":"decimal(16,2)","nullable":true,"metadata":{"comment":"测试字段3"}},{"name":"col4","type":"varchar(40)","nullable":true,"metadata":{"comment":"测试字段4"}},{"name":"dt","type":"varchar(8)","nullable":true,"metadata":{"comment":"分区"}}]}'

);

七、再次通过spark查询,hive metastore不一致告警消失

select * from `ittemp`.`zxh_test1`;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
org.apache.hadoop.hive.metastore.HiveMetaException是Hive元数据存储的异常类,它表示在获取模式版本时发生了错误。Hive是一个基于Hadoop的数据仓库基础设施,用于处理大规模数据集。HiveMetaException通常是由以下原因引起的: 1. 元数据存储不可用:可能是由于网络故障、元数据存储服务未启动或配置错误等原因导致无法连接到元数据存储。 2. 模式版本不存在:当尝试获取模式版本时,如果指定的版本不存在,就会抛出HiveMetaException异常。 3. 权限问题:可能是由于缺乏足够的权限或访问控制配置错误导致无法获取模式版本。 为了解决这个问题,你可以尝试以下几个步骤: 1. 检查元数据存储是否可用:确保元数据存储服务已经启动,并且网络连接正常。可以尝试通过telnet或ping命令来测试连接。 2. 检查元数据存储配置:确保Hive配置文件中指定的元数据存储地址和端口号是正确的,并且与实际的元数据存储服务配置一致。 3. 检查权限设置:确保你具有足够的权限来访问元数据存储。如果使用的是远程元数据存储,还需要确保网络访问控制正确配置。 4. 检查模式版本是否存在:如果指定的模式版本不存在,可以尝试创建一个新的模式版本或者使用已经存在的模式版本。 如果以上步骤都没有解决问题,可能需要进一步检查Hive的日志文件以获取更多详细的错误信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值