Hive中常用排错的命令

1、显示Table和Partition的详细信息

-- 获取table详细描述信息、存储格式等
desc formatted test;

hive查看存储格式化 hive查看表存储格式的命令_模糊查询表

通过上述命令,可以查询出来存储格式、表在hdfs实际存储的目录,表的基本信息等都可以列出来,有利于排查问题。

2、分区信息查看

-- 显示test表分区信息
show partitions test;

-- 显示test表 指定(ds=20190903)分区相信信息,如果存在就显示,如果不存在就不显示
show partitions test partition(ds=20190903);
show partitions test partition(ds=20190904);

-- 显示分区的详细信息,可以查看字段
desc formatted test partition(ds=20190903);

hive查看存储格式化 hive查看表存储格式的命令_Hive_02

hive查看存储格式化 hive查看表存储格式的命令_模糊查询表_03

在此特地的提一下  “desc formatted test partition(ds=20190903);” 这个SQL,为什么呢?

可能有人会问,记这些有啥用,等你被坑的时候,你就知道了?

我来介绍一下这个坑,其实也不是坑吧,个人认为就是有一点不合理,怎么说呢?对于OLAP来讲,确实增减字段不是很厚道,但是大部分业务会有这样的场景,比如A表里面有10个字段,我需要临时加一个字段,怎么办?

加个字段呗?   alter table test add columns(age int);    -- 非分区表,正常的

BUT常用的是分区表,不可行,常见的一个现象就是,导入导出、查询分区表的数据的时候,会出现某一列无数据,有时候报错,慌不?查看创表语句发现,确实加上了字段了呀,但是就是无法进行导出操作?报不存在字段,慌不?

不要慌:其实是你操作不对,也不算是Hive的bug吧,Hive已经提供了解决方案,如下:

示例:alter table test_partition partition(year=2018) add columns(age int);   -- 往 year=2018 分区里面添加字段

这样写,只能针对与一个分区,进行添加字段,能批量对历史分区也加上字段么?

示例:alter table table_for_test_add_column add columns (added_column string COMMENT '新添加的列') CASCADE;

那么我们就可以继续happy的玩耍了~     验证各种操作都正常~

3、show语句支持正则表达式

场景:

      有一个库,有N张表,我们需要查询某一张表,怎么办呢?名字刚好又忘记了,只记得个大概,那么我们可以进行模糊查询哦~(不知道这个语法之前,宝宝都是copy出来,然后用submit 搜的)

使用命令如下:

-- 模糊查询函数名
show functions "a.*";
show functions "a.";
show functions "ab.";
show functions ".s";
show functions "*.s";
show functions ".bs";

-- 模糊查询表名
show tables "*.test.*"

-- 语法雷同,具体不多bb。

-- 该语句输出匹配正则表达式的自定义和内置的函数,使用’.*’输出所有函数。需要注意的是正则表达式中必须要有点号,否则不会匹配成功

hive查看存储格式化 hive查看表存储格式的命令_模糊查询函数_04

hive查看存储格式化 hive查看表存储格式的命令_Hive_05

 

嗯,目前就这些小技巧了~ 后续使用上再发现,再继续补充吧,基础的DDL、DML,我没写哦~