hive 如何终端hive显示分区时

版权声明:本文为博主原创文章,未经博主允许随机转载。 /mtj66/article/details/


hive根据数据创建分区,并且动态加载数据到分区

hive正则匹配去除指定分隔符:

hive 时间函数 添加分钟或者秒

编辑内容如下 (此处的目的是为了能够尽量让job在本地执行,缩短等待时间,方便调试):

1. 验证对分区表进行动态分区插入功能

2. 验证是否可以使用load进行动态分区插入

2. 建立非分区表并加载数据


执行命令及结果如图1所示。


3. 建立外部分区表并动态加载数据


执行命令及结果如图2所示。


可以看到,向内部分区表中加载了8条数据,动态建立了目录。

4. 编辑a.txt,使其有以下4行数据,然后在执行下面的命令。


执行命令及结果如图3所示。


可以看到,现在表中有12条数据,OVERWRITE并没有覆盖原来的分区,而是追加了4条数据,并且动态建立了新的分区目录。

再次执行一次下面的命令:


执行命令及结果如图4所示。


可以看到,现在表中还是12条数据,分区目录也没有变化。

在动态分区插入上,内外部分区表的行为相同,实验从略。

5. 使用LOAD做动态分区插入


执行命令及结果如图5所示。


可以看到,load命令不支持动态分区插入。

总结: 1. OVERWRITE不会删除已有的分区目录,只会追加新的分区,并覆盖已有分区的非分区数据。

2. 不能使用load进行动态分区插入

  • 分区表的一个分区对应hdfs上的一个目录
  • 分区表包括静态分区表和动态分区表,根据分区会不会自动创建来区分

创建静态分区表,加载数据:

添加分区,load数据:

  • 可以看出,所谓的分区,是人为定义的,跟业务数据实际上是不是属于该分区没关系,比如将相同的数据分别插入两个分区中,再比如插入的数据有2017-12月份的和2018-01月份的数据

手工创建hdfs目录和文件,添加分区的情况:
静态分区表如果手工创建对应的hdfs目录上传文件,而不使用分区创建命令和load数据到分区的命令,分区表中无法查到该分区信息,需要刷新,这种添加分区的途径是不合法的:

动态分区表就这么简单。

我要回帖

更多关于 hive显示分区 的文章

 

随机推荐