hive如何刷新现有分区

hive刷新现有分区的需求,一般出现在你操组分区数据时采用了其他手段,也有极少的情况是有的发行版会删除历史很久的分区,总之各种原因导致的元数据和实际数据的分区对不上。

此时你就可以运行如下语句,让hive去根据实际数据刷新元数据

bash 复制代码
msck repair table 表名

应当注意的是,如果元数据中存在,但实际数据路径不存在,hive会删除元数据中的消息,而不是去新增底层数据路径。反之如果元数据中不存在,单实际路径中存在,hive会新增元数据信息。

在命令运行的时候,常见一个报错为Caused by: MetaException (message:java. lang. Nul PointerException)或者return code 1 from org.apache.hadoop.hive.ql.exec这个报错是值,实际路径中存在过去不hive校验的数据,通常是路径有特殊字符、数据文件格式不对等,此时如果你已经确定数据没有问题,但就是过不去校验,可以使用下面的配置

bash 复制代码
set hive.msck.path.validation=ignore;  #忽略校验错误
或者
set hive.msck.path.validation=skip;   #跳过校验

但是修改这个参数有个风险,就是你在未来操作这些问题分区的数据文件的时候,由于你当时没有排查并解决这些问题,可能导致操作报错,博主有过因为跳过验证后期在删除历史无用的分区时报空指针的问题

此外如果你只是新增一个已知的分区,你可以直接add它

bash 复制代码
ALTER TABLE table_name ADD PARTITION (partition_column='value') LOCATION 'hdfs://path/to/partition';

location可以不带,默认改路径在表数据路径下,但是注意ADD PARTITION不会去直接操作对应的数据路径,和msck的时候一样,对于需要追加的新分区只操作元数据的新增

相关推荐
core5125 天前
Hive实战(三)
数据仓库·hive·hadoop
程序员小羊!5 天前
大数据电商流量分析项目实战:Hive 数据仓库(三)
大数据·数据仓库·hive
core5126 天前
Hive实战(一)
数据仓库·hive·hadoop·架构·实战·配置·场景
智海观潮6 天前
Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件
hive·sql·spark
cxr8287 天前
基于Claude Code的 规范驱动开发(SDD)指南
人工智能·hive·驱动开发·敏捷流程·智能体
core5127 天前
Hive实战(二)
数据仓库·hive·hadoop
Agatha方艺璇8 天前
Hive基础简介
数据仓库·hive·hadoop
像豆芽一样优秀9 天前
Hive和Flink数据倾斜问题
大数据·数据仓库·hive·hadoop·flink
howard200510 天前
VMWare上搭建Hive集群
hive·hadoop
程序猿 董班长12 天前
springboot配置多数据源(mysql、hive)
hive·spring boot·mysql