因为昨天工作的时候踩 了坑,所以来记录一下。(我的问题是:我把hive表手动删掉 ,后来重新创建了一个一样的表,然后原有的分区数据全部损坏了,数据导不进去了)

一、msck repair table 命令是做啥的

MSCK REPAIR TABLE命令主要是用来:解决通过hdfs dfs -put或者hdfs api写入hive分区表的数据在hive中无法被查询到的问题。

我们知道hive有个服务叫metastore,这个服务主要是存储一些元数据信息,比如数据库名,表名或者表的分区等等信息。如果不是通过hive的insert等插入语句,很多分区信息在metastore中是没有的,如果插入分区数据量很多的话,你用 ALTER TABLE table_name ADD PARTITION 一个个分区添加十分麻烦。这时候MSCK REPAIR TABLE就派上用场了。只需要运行MSCK REPAIR TABLE命令,hive就会去检测这个表在hdfs上的文件,把没有写入metastore的分区信息写入metastore。

二、例子

我们先创建一个分区表,然后往其中的一个分区插入一条数据,在查看分区信息

-- 建分区表
CREATE TABLE repair_test (col_a STRING)
PARTITIONED BY (par STRING);-- 插入数据
INSERT INTO TABLE repair_test PARTITION(par="partition_1") VALUES ("test");-- 查看分区信息
SHOW PARTITIONS repair_test;

查看分区信息的结果如下:

+------------------+--+
| partition |
+------------------+--+
| par=partition_1 |
+------------------+--+
1 row selected (0.073 seconds)
0: jdbc:hive2://localhost:10000>

然后我们通过hdfs的put命令手动创建一个数据

[ericsson@h3cnamenode1 pcc]$ echo "123123" > test.txt[ericsson@h3cnamenode1 pcc]$ hdfs dfs -mkdir -p /user/hive/warehouse/test.db/repair_test/par=partition_2/[ericsson@h3cnamenode1 pcc]$ hdfs dfs -put -f test.txt /user/hive/warehouse/test.db/repair_test/par=partition_2/[ericsson@h3cnamenode1 pcc]$ hdfs dfs -ls -R /user/hive/warehouse/test.db/repair_testdrwxrwxrwt - ericsson hive 0 2018-08-10 17:46 /user/hive/warehouse/test.db/repair_test/par=partition_1drwxrwxrwt - ericsson hive 0 2018-08-10 17:46 /user/hive/warehouse/test.db/repair_test/par=partition_1/.hive-staging_hive_2018-08-10_17-45-59_029_1594310228554990949-1drwxrwxrwt - ericsson hive 0 2018-08-10 17:46 /user/hive/warehouse/test.db/repair_test/par=partition_1/.hive-staging_hive_2018-08-10_17-45-59_029_1594310228554990949-1/-ext-10000-rwxrwxrwt 3 ericsson hive 5 2018-08-10 17:46 /user/hive/warehouse/test.db/repair_test/par=partition_1/000000_0drwxr-xr-x - ericsson hive 0 2018-08-10 17:57 /user/hive/warehouse/test.db/repair_test/par=partition_2-rw-r--r-- 3 ericsson hive 7 2018-08-10 17:57 /user/hive/warehouse/test.db/repair_test/par=partition_2/test.txt[ericsson@h3cnamenode1 pcc]$

这时候我们查询分区信息,发现partition_2这个分区并没有加入到hive中

0: jdbc:hive2://localhost:10000> show partitions repair_test;
INFO : OK
+------------------+--+
| partition |
+------------------+--+
| par=partition_1 |
+------------------+--+
1 row selected (0.079 seconds)
0: jdbc:hive2://localhost:10000>

运行MSCK REPAIR TABLE 命令后再查询分区信息,可以看到通过put命令放入的分区已经可以查询了

0: jdbc:hive2:> MSCK REPAIR TABLE repair_test;
0: jdbc:hive2:> show partitions repair_test;
+------------------+--+
| partition |
+------------------+--+
| par=partition_1 |
| par=partition_2 |
+------------------+--+
2 rows selected (0.088 seconds)
0: jdbc:hive2:> select * from repair_test;
+--------------------+------------------+--+
| repair_test.col_a | repair_test.par |
+--------------------+------------------+--+
| test | partition_1 |
| 123123 | partition_2 |
+--------------------+------------------+--+
2 rows selected (0.121 seconds)
0: jdbc:hive2://localhost:10000>

Hive 修复分区 MSCK REPAIR TABLE的使用相关推荐

  1. Hive有分区文件到时select不到数据问题-----修复分区命令 msck repair table xxxxx

    问题:在导数据到hive分区表时, 手动把HDFS路径建好了,然后把对应的文件添加到路径下. 这时用select语句查询却查不到数据. 原因:虽然分区文件有了,但是分区信息没有添加到hive元数据表中 ...

  2. HIVE常用命令之MSCK REPAIR TABLE

    目录 MSCK REPAIR TABLE 命令是做啥的 例子 后续 MSCK REPAIR TABLE 命令是做啥的 MSCK REPAIR TABLE命令主要是用来解决通过hdfs dfs -put ...

  3. HIVE常用命令之MSCK REPAIR TABLE命令简述

    工作中发现很多同事连基础的hive命令都不知道,所以准备写一个系列把hive一些常用的命令进行一个总结.第一个讲的命令是MSCK REPAIR TABLE. MSCK REPAIR TABLE 命令是 ...

  4. Hive刷分区MSCK

    一.介绍 我们平时通常是通过alter table add partition方式增加Hive的分区的,但有时候会通过HDFS put/cp命令往表目录下拷贝分区目录,如果目录多,需要执行多条alte ...

  5. hive执行msck repair报错msck is missing partition columns under hdfs://表分区路径

    排查: 查看hiveserver日志报以下异常 msck is missing partition columns under hdfs://表分区路径 查看hdfs该表分区目录,存在分区=$%xxx ...

  6. Hive分区修复命令MSCK介绍与使用

    我们在使用Hive的时候肯定遇到过建立了一张分区表,然后手动(比如使用 cp 或者 mv )将分区数据拷贝到刚刚新建的表作为数据初始化的手段:但是对于分区表我们需要在hive里面手动将刚刚初始化的数据 ...

  7. hive修复多级分区

    1.多级分区修复:添加OBS有而hive元数据没有的分区 set hive.msck.path.validation=ignore; MSCK REPAIR TABLE table_name ; 2. ...

  8. hive动态分区,分区数据的几种插入方式,hive常用优化

    首先列举下hive分区插入的方式: 1:从文件导入数据到hive指定分区方式 load data local inpath 'filepath' into table tableName partit ...

  9. hive动态分区shell_hive-shell批量操作分区文件

    使用hive表的过程中经常需要一些便捷操作: 一.hdfs文件批量写SUCCESS文件,一般来说hive表生成结束,会产生一个_SUCCESS文件判断数据是否正常刷新完成 但是如果是动态分区插入表进行 ...

最新文章

  1. 分享一波 RabbitMQ 面试题有答案
  2. mysql源码安装都能装什么模块_源码安装后,添加其他模块
  3. 北风设计模式课程---单一职责原则
  4. hdu3255 线段树扫描线求体积
  5. 材料模拟python_用Python模拟无限生成器
  6. 没有搜索_没有明显足够搜索量关键词的类目产品应该怎么办?
  7. 爱摸鱼的Dillonh
  8. delphi excel取批注所在的行列_35个Excel使用技巧
  9. liunx系统不能登陆的问题
  10. 个推如何管理亿级代码的质量?持续集成SonarQube 代码质量管理系统
  11. python 日历+记事
  12. 如何隐藏Windows7 系统保留分区
  13. android app 开源项目,20+个很棒的Android开源项目
  14. Landsat数据下载+USGS
  15. 第十篇:扩展SOUI的控件及绘图对象(ISkinObj)
  16. 适合公司用的电子邮箱哪家好?企业邮箱最全功能介绍~
  17. Win10下kafka简单安装及使用
  18. 微机原理与接口技术:并行接口
  19. 蓝鹊生物国内首款新冠mRNA嵌合体疫苗获批临床
  20. 看书要仔细----自定义控件库摸索记

热门文章

  1. 浏览器是直接加载二进制图片更快还是加载base64编码的图片更快?
  2. 游戏美术素材尺寸规划
  3. django 热启动_uwsgi 热部署 热启动 热更新
  4. facebook有哪些信息_如何让人们不知道您在Facebook上阅读了他们的信息
  5. IoT物联网——各大厂质量保障实践汇总(智能硬件其他篇)
  6. Django实现收藏功能
  7. 周志华老师报告Boasting 25years
  8. IT行业对学历要求如何?
  9. 基于jsp+mysql+Spring+SpringMVC+mybatis的爱康医院专家预约管理系统
  10. 数据分析笔记--matplotlib(五)绘制条形图