zoukankan      html  css  js  c++  java
  • hive 表分区操作

        hive的数据查询一般会扫描整个表,当表数据太大时,就会消耗些时间,有时候我们只需要对部分数据感兴趣,所以hive引入了分区的概念

       hive的表分区区别于一般的分布式分区(hash分区,范围分区,一致性分区),hive的分区是比较简单的。他是根据hive的表结构,分区的字段设置将数据按目录存放起来,相当于简单的索引
       hive表分区需要在表模式创建的时候指定模式才能使用,他的字段是虚拟的列,不存在表数据中。表分区在表模式创建之后使用之前使用alert table 来添加具体的分区,才能使用
     
    添加分区
    alert table tableName add
    partition(ds='2016-12-16',coutry='beiJing')
    location='/opt/hive/beiJing/part2016-12-16'
    partition(ds='2016-12-17',coutry='beiJing')
    location='/opt/hive/beiJing/part2016-12-17'
    删除分区
    alert table tableName drop partitionName,partitionName1,partitionName2
    例:
    alert table tableName drop partition(ds='2016-12-16',coutry='beiJing')
    1)删除分区会连元数据和数据一并删除
    2)在为表指定具体分区时,在创建表时必须要为表添加对应的模式,否则会抛出异常
    3)分区的名称不能与表属性的名称一样
    4)还可以创建多个分区,相当于多级索引的功能
     
    在使用hsql向表中添加数据,如果hsql中的分区,在hdfs中没有,则hive会根据hsql自动新建分区(可能有的hive版本不支持自动创建分区,这里使用的是2.1.0)
    insert overwrite table zhangTest partition(sexual=2) select studentid, sex,address,email from student_3 where sex=0
     
     
    删除表
    alert table drop tableName
    删除表将会数据和元数据一起删除,如果定义了trash,那么删除的数据将会到trash/current目录下 。如果定义了外部表就只会删除元数据,不会删除数据
     
    删除和创建视图
    create view viewName [{col_name},....]
    as select....
    目前只有hive6.0之后的版本才有这个功能,视图是只读的,不能对其进行load/insert/alert操作。
    视图中有可能引用了order by 或者limit 子句,如果一个查询语句引用了这样一个视图,那么会优先查询视图中的语句,然后返回结果按照视图中的结果返回
    drop vieww viewName//删除指定的视图
     
    创建或删除函数
    creeate temporary funaction fun_name as classs_name//
    drop temporary fun_name//
     
    展示描述语句(显示语句可以使用正则表达式进行匹配“*”,“|”“[]”)
    show tables identifier_with_wildcards
    显示表或者分区扩展表
    show table extended ..
    显示函数
    show function "a"
  • 相关阅读:
    ajaxFileUpload 实现多文件上传(源码)
    Springboot 热部署的两种方式
    基于树莓派3B+Python3.5的OpenCV3.4的配置教程
    Shiro 架构原理
    Cron表达式
    SpringBoot中Scheduled代码实现
    Linus安装mysql8
    查看虚拟机CENTOS7 的 IP 地址和命令
    linux vi保存退出命令 (如何退出vi)
    Linux常用命令大全
  • 原文地址:https://www.cnblogs.com/zhangXingSheng/p/6223392.html
Copyright © 2011-2022 走看看