Hive常用命令之MSCK REPAIR TABLE命令概述
对于MSCK REPAIR TABLE命令,小编在工作中初见时,只有简单的理解——“刷新分区”。细究其原理便不得而知了。现在来将学习的内容记录一下。
首先,Hive能检测到的分区信息,存储在哪里?怎么新建分区才会存储在这个可(被Hive)检测位置上?怎么新建分区不会存储在这个可(被Hive)检测的位置上?MASK REAPRE TABLE有什么作用?
Hive能检测到的分区信息,存储在哪里?
分区同database、table等一样,是Hive的元数据信息之一,存储在Derby、MySQL等数据库中。Hive怎么获取元数据信息(包括分区)?
Hive客户端连接metastore服务,metastrore再去连接MySQL获取元数据信息。(备注:有了metastore,多个客户端可以同时连接,而不需要知道MySQL的用户名和密码,只需要连接MySQL服务即可。)怎么新建分区,分区信息才会存储到MySQL中?
插入数据之前,使用alter table xxx add partition()
创建分区;或者插入数据时,使用insert into table xxx partition() value()
创建分区,这些操作都会在MySQL中记录下新的分区信息。怎么新创建分区不会存储在MySQL中?
Hive的数据实际存储在HDFS中,以多层目录的形式存储。
若我们直接使用hdfs -put
向HDFS中创建目录,上传数据,如下:
hdfs dfs -mkdir -p /user/hive/warehouse/test.db/repair_test/par=partition_2/
hdfs dfs -put -f test.txt /user/hive/warehouse/test.db/repair_test/par=partition_2/
或者通过其他形式,直接向Hive表在HDFS中的存储位置创建分区,建立数据。比如服务端DB通过kafka直接将数据落地到HDFS。这两种情况都不会在MYSQL存储的元数据信息中添加新分区信息。
新的元数据信息添加到了HDFS中,没有添加到MYSQL中,这时就需要使用MASK REPAIRE TABLE “刷新分区”了。
MASK REPAIR TABLE有什么作用?
MASK(全称metastore consistency check,Hive表分区连贯性检查),运行MASK REPAIR TABLE 后,Hive回去检测这个表在HDFS上的文件,把没有写入metastore的分区信息写入到metastore。上面讲的是在HDFS中添加分区,MASK REPAIR TABLE刷新后,能将新分区信息添加到metastore中。若是直接从HDFS中删除分区呢?使用MASK REPAIR TABLE后能将metastore中过期的分区信息删除掉吗?
答案是不行的。
只能在Hive客户端中通过alter table drop partition(…)删除metastore中的分区信息。
备注:在一些新版本的Hive中(比如Fix Version/s: 3.0.0, 2.4.0, 3.1.0 ),MASK REPAIR TABLE 命令能删除掉metastore中的过期元数据信息。
参考文章:
[1] HIVE常用命令之MSCK REPAIR TABLE命令简述-简书
[2] Hive为什么要启用Metastore?
觉得文章还不错的话,客官赏个小钱买支雪糕吃吧。(好吧,就是想试试被打赏是种什么感觉,盒盒盒~)
Hive常用命令之MSCK REPAIR TABLE命令概述相关推荐
- HIVE常用命令之MSCK REPAIR TABLE命令简述
工作中发现很多同事连基础的hive命令都不知道,所以准备写一个系列把hive一些常用的命令进行一个总结.第一个讲的命令是MSCK REPAIR TABLE. MSCK REPAIR TABLE 命令是 ...
- HIVE常用命令之MSCK REPAIR TABLE
目录 MSCK REPAIR TABLE 命令是做啥的 例子 后续 MSCK REPAIR TABLE 命令是做啥的 MSCK REPAIR TABLE命令主要是用来解决通过hdfs dfs -put ...
- Hive 修复分区 MSCK REPAIR TABLE的使用
因为昨天工作的时候踩 了坑,所以来记录一下.(我的问题是:我把hive表手动删掉 ,后来重新创建了一个一样的表,然后原有的分区数据全部损坏了,数据导不进去了) 一.msck repair table ...
- Hive有分区文件到时select不到数据问题-----修复分区命令 msck repair table xxxxx
问题:在导数据到hive分区表时, 手动把HDFS路径建好了,然后把对应的文件添加到路径下. 这时用select语句查询却查不到数据. 原因:虽然分区文件有了,但是分区信息没有添加到hive元数据表中 ...
- HIVE——常用sql命令总结
文章目录 hive常用交互命令 `-e`执行sql `-f`执行脚本中sql语句 hive cli命令行窗口操作hdfs 查看hive中输入的所有历史命令 库 创建库 查看库 使用库 修改库 删除库 ...
- hive执行msck repair报错msck is missing partition columns under hdfs://表分区路径
排查: 查看hiveserver日志报以下异常 msck is missing partition columns under hdfs://表分区路径 查看hdfs该表分区目录,存在分区=$%xxx ...
- MySQL建表(create table)命令详解
MySQL建表(create table)命令详解 create table命令 强调:使用建表命令之前必须使用use命令选择表所在的数据库.create table命令的格式如下: create t ...
- Hive 常用指令记录
一.Hive基本概念 1.1 hive是什么 hive是基于hadoop的一个数仓分析工具,hive可以将hdfs上存储的结构化的数据,映射成一张表,然后让用户写HQL(类SQL)来分析数据 tel ...
- hive动态分区,分区数据的几种插入方式,hive常用优化
首先列举下hive分区插入的方式: 1:从文件导入数据到hive指定分区方式 load data local inpath 'filepath' into table tableName partit ...
- hive 的drop table命令出错
一 前言 今天遇到 如题所示问题,出错内容提示如下 FAILED: Error in metadata: javax.jdo.JDODataStoreException: Error(s) were ...
最新文章
- android 图片过滤,android 图片转为bitmap,黑白镜过滤
- Java学习笔记之:Java JDBC
- jQuery 事件绑定
- python加密敏感信息_仅需10行代码,使用python加密用户敏感数据
- Target runtime com.genuitec.runtime.generic.jee60 is not defined.报错解决
- SpringMVC实现文件上传
- SpringCloud工作笔记051---SpringCloud打包部署流程
- namenode的元数据会被删除吗_欠阿里云0.01元,欠费15天后数据被删除了
- 来自intlsy‘s省选debug方法
- 【风电功率预测】基于matlab粒子群算法优化LSTM风电功率预测【含Matlab源码 941期】
- centos 7 64位虚机上android4环境运行
- 最新更新-最全泰尔指数合集:分省、地级市、产业结构泰尔指数计算模板(部分更新2020年)
- 【Dam Dadi Doo】MMD镜头+动作打包下载.zip
- 什么是网桥,它应该如何搭建
- 计算机组装电源的位置在哪,计算机组装之机箱和ATX电源
- C1. Skyscrapers (从easy到hard)
- P68是什么意思 IP67和IP68等级有什么区别
- Logstash配置插件grok详解
- 开水果店的水果怎么保鲜,新手开水果店水果保鲜方法
- 最好听的男孩、女孩名字