博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
004.使用MSCK命令修复Hive表分区
阅读量:6690 次
发布时间:2019-06-25

本文共 1364 字,大约阅读时间需要 4 分钟。

  hot3.png

一、背景

目前总有一些场景:

例如1:
我上家公司也有这样做法的小伙伴,新建一个month=20150101分区,然后以为就可以读取数据叻。当然我理解你的心情。

你在hive的某个表新建了一个month的文件夹,却要求它,说:你小子记住了,这就是你的新兄弟,一个新的month分区。

但是你要记住,它获取分区,是从元数据表中获取,而不是hdfs上;即使你hdfs数据删除了,还是可以读取到这些分区。

但是:

我不建议大家这样做,永远都不建议。
就好比你送我一个东西,却不告诉我是什么,在哪里!
这个和没送 并没有任何区别。(当然也有所谓的解决方案作参考)
建立:使用hive的静态分区和动态分区,来创建分区,告诉它。

二、介绍

我们平时通常是通过alter table add partition方式增加Hive的分区的,但有时候会通过HDFS put/cp命令往表目录下拷贝分区目录,如果目录多,需要执行多条alter语句,非常麻烦。Hive提供了一个"Recover Partition"的功能。

MSCK REPAIR TABLE table_name; 

原理相当简单,执行后,Hive会检测如果HDFS目录下存在但表的metastore中不存在的partition元信息,更新到metastore中。

三、测试

#当前没有partition元信息hive> show partitions cr_cdma_bsi_mscktest;OKTime taken: 0.104 seconds#创建两个分区目录hive> dfs -mkdir /user/hive/warehouse/cr_cdma_bsi_mscktest/month=201603;hive> dfs -mkdir /user/hive/warehouse/cr_cdma_bsi_mscktest/month=201604;#使用MSCK修复分区hive> msck repair table cr_cdma_bsi_mscktest;OKPartitions not in metastore:    cr_cdma_bsi_mscktest:month=201603Partitions not in metastore:    cr_cdma_bsi_mscktest:month=201604Repair: Added partition to metastore cr_cdma_bsi_mscktest:month=201603Repair: Added partition to metastore cr_cdma_bsi_mscktest:month=201604Time taken: 0.286 seconds, Fetched: 2 row(s)#再次查看,发现已经成功更新元信息hive> show partitions cr_cdma_bsi_mscktest;OKmonth=201603month=201604Time taken: 0.102 seconds, Fetched: 1 row(s)

相关JIRA:HIVE-874

转载于:https://my.oschina.net/repine/blog/691354

你可能感兴趣的文章
浅谈git和svn的区别
查看>>
JMETER 生成测试报告
查看>>
ScrollView中嵌套ListView
查看>>
XML再深入
查看>>
顺序表基础操作--练习
查看>>
Spring Cloud底层原理
查看>>
SSM前言——相关设计模式
查看>>
小清丽微距花卉拍摄示范
查看>>
GetSysColor()函数可以得到系统的颜色
查看>>
项目积累demo-01
查看>>
JAVA面向对象编程深入理解图
查看>>
Android开发笔记03
查看>>
[Hadoop in China 2011] 人人网:基于Hadoop的SNS统计和聚类推荐
查看>>
[转]阳光加利福尼亚 --土老冒的硅谷、旧金山见闻
查看>>
解决Eclipse下不自动拷贝apk到模拟器问题( The connection to adb is down, and a severe error has occured)...
查看>>
Google后Hadoop时代的新“三驾马车”——Caffeine、Pregel、Dremel
查看>>
jsp与jsp之间传参数如何获取
查看>>
如何做好一名售前工程师 [理论]
查看>>
什么是语法糖?
查看>>
rabbitMQ的安装和创建用户
查看>>