hive通过元数据库删除分区操作步骤

删除分区失败:
alter table proj_60_finance.dwd_fm_ma_kpi_di_mm drop partition(year=2025,month=0-3,type=ADJ);

1、查询分区的DB_ID、TBL_ID
– 获取数据库ID-26110
SELECT DB_ID FROM DBS WHERE NAME = ‘proj_60_finance’;
– 获取表ID-307194
SELECT TBL_ID FROM TBLS WHERE TBL_NAME = ‘dwd_fm_ma_kpi_di_mm’ AND DB_ID = 26110;

2、 查询分区的PART_ID和SD_ID
– 根据分区键值查找PART_ID
–第一个分区键year的值
–第二个分区键month的值
–第三个分区键type的值
SELECT p., pk1., pk2., pk3.
FROM PARTITIONS p
JOIN PARTITION_KEY_VALS pk1 ON p.PART_ID = pk1.PART_ID
JOIN PARTITION_KEY_VALS pk2 ON p.PART_ID = pk2.PART_ID
JOIN PARTITION_KEY_VALS pk3 ON p.PART_ID = pk3.PART_ID
WHERE p.TBL_ID = 307194
AND pk1.INTEGER_IDX = 0 AND pk1.PART_KEY_VAL = ‘2025’
AND pk2.INTEGER_IDX = 1 AND pk2.PART_KEY_VAL = ‘0-3’
AND pk3.INTEGER_IDX = 2 AND pk3.PART_KEY_VAL = ‘ADJ’;

3、 删除相关元数据
– 删除分区键值(PARTITION_KEY_VALS)
select * FROM PARTITION_KEY_VALS WHERE PART_ID = 18620706;
DELETE FROM PARTITION_KEY_VALS WHERE PART_ID = 18620706;
– 删除分区参数(PARTITION_PARAMS,如果有)
select * FROM PARTITION_PARAMS WHERE PART_ID = 18620706;
DELETE FROM PARTITION_PARAMS WHERE PART_ID = 18620706;
– 删除分区记录(PARTITIONS)
select * FROM PARTITIONS WHERE PART_ID = 18620706;
DELETE FROM PARTITIONS WHERE PART_ID = 18620706;
– 删除存储描述(SDS,确保无其他引用)
select * FROM SDS WHERE SD_ID = 23951880;
DELETE FROM SDS WHERE SD_ID = 23951880;
– 可选:删除统计信息(PART_COL_STATS)
select * FROM PART_COL_STATS WHERE PART_ID = 18620706;
DELETE FROM PART_COL_STATS WHERE PART_ID = 18620706;

4、 手动清理HDFS数据
hadoop fs -rm -r /hive/path/to/partition # 替换为实际路径

5、刷新hive元缓存
msck repair table proj_60_finance.dwd_fm_ma_kpi_di_mm

### Hive元数据库配置方法及步骤 Hive默认使用内嵌的Derby数据库作为元数据库,但该模式不适用于生产环境。为了支持多用户访问和高可用性,Hive支持将元数据存储在外部关系型数据库中,如MySQL、PostgreSQL等[^3]。 #### 配置Hive使用MySQL作为元数据库 1. **在MySQL中创建Hive元数据库** 登录MySQL并创建用于存储Hive元数据的数据库,例如`metastore`: ```bash mysql -uroot -p ``` ```sql CREATE DATABASE metastore; ``` 该数据库将用于存储Hive表的元信息,包括表名、列名、分区信息等[^2]。 2. **将MySQL JDBC驱动添加到Hive的lib目录** 下载MySQL的JDBC驱动(如`mysql-connector-java-8.0.x.jar`),并将其复制到Hive安装目录下的`lib`文件夹中,以确保Hive能够连接到MySQL数据库[^1]。 3. **更新Guava库版本** Hive依赖Hadoop的Guava库,需确保Hive的`lib`目录下的Guava版本与Hadoop保持一致,避免版本冲突导致初始化失败。 4. **配置hive-site.xml文件** 在`$HIVE_HOME/conf`目录下创建或修改`hive-site.xml`文件,配置元数据库的连接信息: ```xml <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>your_password</value> </property> </configuration> ``` 以上配置指定了Hive使用MySQL作为元数据库,并设置了连接参数[^1]。 5. **初始化Hive元数据库** 使用Hive自带的Schema工具初始化元数据库: ```bash schematool -dbType mysql -initSchema ``` 该命令会创建所需的元数据表结构,确保Hive能够正常读写元信息[^1]。 6. **验证配置是否成功** 启动Hive并执行简单查询验证元数据库是否配置成功: ```sql SHOW DATABASES; ``` 如果命令执行成功并返回数据库列表,说明Hive已成功连接到MySQL元数据库[^1]。 --- ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值