Hive(三)——数据定义

  • 每个数据库会创建一个目录,数据库下的表变现为改目录下的子目录(default库无自己的目录)

  • 数据库目录默认在hive.metastore.warehouse.dir指定的顶层目录后,例如,常见数据库database,则hive创建一个/user/hive/warehouse/database.db目录。

    # 我们可以通过以下命令修改建库默认位置
    hive > CREATE DATABASE financials> LOCATION '/my/preferred/directory';# 也可以为数据库增加一个描述信息
    hive >CREATE DATABASE financials> COMMENT 'Holds all financial tables';
    
  • 可以为数据库增加一些和其相关的键-值对属性信息,尽管目前仅有的功能就是提供了一种可以通过DESCRIBE DATABASE EXTENDED 语句显示出这些信息的方式:

    hive> CREATE DATABASE financials> WITH DBPROPERTIES ('creator' = 'Mark Moneybags', 'date' = '2012-01-02');hive> DESCRIBE DATABASE financials;
    financials  hdfs://master-server/user/hive/warehouse/financials.dbhive> DESCRIBE DATABASE EXTENDED financials;
    financials  hdfs://master-server/user/hive/warehouse/financials.db{date=2012-01-02, creator=Mark Moneybags);
    
  • 默认情况下,Hive是不允许用户删除一个包含有表的数据库的。用户要么先删除数据库中的表,然后再删除数据库;要么在删除命令的最后面加上关键字CASCADE,这样可以使Hive自行先删除数据库中的表:

    hive> DROP DATABASE IF EXISTS financials CASCADE;
    
  • 可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES设置键-值对属性值,来描述这个数据库的属性信息

    hive> ALTER DATABASE financials SET DBPROPERTIES ('edited-by' = 'Joe Dba');
    
  • Hive会自动增加两个表属性:一个是last_modified_by,另一个是last_modified_time。如果用户未定义任何表属性,那么他们也不会显示在详细信息中。

  • 我们可以拷贝一张已经存在的表的表结构(而无需拷贝数据):

    CREATE TABLE IF NOT EXISTS employee2 like employee;# 也可指定LOCATION
    
  • 即使我们不在那个数据库下,我们还是可以列举指定数据库下的表的:

    hive> SHOW TABLES IN mydb;
    # 如果有很多表,可以使用正则表达式
    hive>SHOW TABLE 'emplo.*';
    # IN database_name语句暂不自持与正则一起使用
    
  • 查看数据库或表的详细信息:

    # 查看那数据库信息
    hive>DESCRIBE DATABASE EXTENDED data_name;
    # 查看表信息
    hive>DESCRIBE EXTENDED table_name;
    # 使用FORMATTED关键字替代EXTENDED关键字,可以提供更加可读与详细的信息
    hive>DESCRIBE FORMATTED table_name; # 常用
    # 还能查看表中某字段的信息
    hive>DESCRIBE EXTENDED table_name.clo_name;
    
  • 关键字EXTERNAL用于创建hive外部表,好处在于方便和其他工具共享数据。hive对于外部表不具备完全的权限,删除该外部表不会被清除数据,但是元数据会被清除。

  • LIKE关键字,复制表结构,且:
    1、在无EXTERNAL关键字修饰时新表与模板表同为MANGER_TABLE或者EXTERNAL_TABLE;
    2、有EXTERNAL关键字修饰则必为EXTERNAL_TABLE

  • 将hive设置为“strict”模式,当where字句无分区过滤时,就不会提交这个查询,以防止一个巨大的mapreduce任务。

    hive> set hive.mapred.mode=strict;
    
  • 如果我们只想查看某特定分区键的分区:

    hive> SHOW PARTITIONS employees PARTITION(country='US');
    country=US/state=AL
    country=US/state=AK
    ...hive> SHOW PARTITIONS employees PARTITION(country='US', state='AK');
    country=US/state=AK
    
  • 查看分区数据所在的路径

    hive> DESCRIBE EXTENDED log_messages PARTITION (year=2012, month=1, day=2);
    
  • 将配置属性fs.trash.interval的值设置为一个合理的正整数即可(如果设置值为1440,那么就表示是24小时),这个值是“回收站检查点”间的时间间隔,如果不小心删除了一张存储着重要数据的管理表的话,那么可以先重建表,然后重建所需要的分区,再从.Trash目录中将误删的文件移动到正确的文件目录下(使用文件系统命令)来重新存储数据。

  • 修改表结构使用ALTER关键字,修改表结构只会修改元数据。

    # 重命名
    hive> ALTER TABLE log_messages RENAME TO logmsgs;# 增加、修改和删除表分区
    hive> ALTER TABLE log_messages ADD IF NOT EXISTS
    PARTITION (year = 2011, month = 1, day = 1) LOCATION '/logs/2011/01/01'hive> ALTER TABLE log_messages PARTITION(year = 2011, month = 12, day = 2)
    SET LOCATION 's3n://ourbucket/logs/2011/01/02';hive> ALTER TABLE log_messages DROP IF EXISTS PARTITION(year = 2011, month = 12, day = 2);# 修改列信息(单列)
    hive (default)> desc test;
    first                   string
    second                  stringhive (default)> alter table test change (columns) first one int after second;    # columns关键字可选
    OK    # 若使用first,则后面不用跟列名,此操作将目标列提至第一列hive (default)> desc test;
    second                  string
    one                     int# 增加列
    hive (default)> desc test;
    one                     int
    two                     inthive (default)> alter table test add columns(three int,forth int);
    OK    # 此columns不可省略hive (default)> desc test;
    one                     int
    two                     int
    three                   int
    forth                   int# 删除或替换列
    hive (default)> desc test;
    one                     int
    two                     int
    three                   int
    forth                   inthive (default)> alter table test replace columns(first string,second string,thrid string);
    OKhive (default)> desc test;
    first                   string
    second                  string
    thrid                   string# 修改表属性
    hive> ALTER TABLE log_messages SET TBLPROPERTIES ('notes' = 'The process id is no longer captured; this column is always NULL');
    
  • ALTER TABLE … ARCHIVE PARTITION语句会将这个分区内的文件打成一个Hadoop压缩包(HAR)文件。但是这样仅仅可以降低文件系统中的文件数以及减轻NameNode的压力,而不会减少任何的存储空间,使用UNARCHIVE替换ARCHIVE就可以反向操作

    hive> ALTER TABLE log_messages ARCHIVE
    PARTITION(year = 2012, month = 1, day = 1);
    
  • 下面的语句可以分别防止分区被删除和被查询,使用ENABLE替换DISABLE可以达到反向操作的目的。这些操作也都不可用于非分区表

    ALTER TABLE log_messages
    PARTITION(year = 2012, month = 1, day = 1) ENABLE NO_DROP;ALTER TABLE log_messages
    PARTITION(year = 2012, month = 1, day = 1) ENABLE OFFLINE;
    

Hive(三)——数据定义相关推荐

  1. 认识Hive,以及Hive的数据定义与数据操作,hive的数据查询和hive函数

    认识Hive 为什么要出现hive 前面知识我们讲到mapreudce计算框架,各位需要通过java编码的形式来实现设计运算过程,这对各位的编程能力提出了更高的要求,难道没有门槛更低的方式来实现运算的 ...

  2. Hive之——数据定义

    转载请注明出处:https://blog.csdn.net/l1028386804/article/details/88379603 Hive会为每个数据库创建一个目录.数据库中的表将会以这个数据库目 ...

  3. hive的数据定义之创建数据库和表

    1.对数据库的操作 create database hive_db //创建数据库hive_db create table hive_db.test(字段) //在数据库hive_db中创建test表 ...

  4. hive(3)HiveQL数据定义

    HiveQL与传统SQL区别 HiveQL是Hive的查询语言.与mysql的语言最接近,但还是存在于差异性,表现在:Hive不支持行级插入操作.更新操作和删除操作,不支持事物. 基本语法 数据库操作 ...

  5. HIVE之 DDL 数据定义 DML数据操作

    DDL数据库定义 创建数据库 1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db.hive (default)> create data ...

  6. 【hadoop生态之Hive】Hive的DDL数据定义语言【笔记+代码】

    四.DDL数据定义 4.1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db. hive (default)> create ...

  7. 数据仓库Hive编程——HiveQL的数据定义(一):Hive中的数据库

    分类目录:商业智能<数据仓库Hive编程>总目录 相关文章: HiveQL的数据定义(一):Hive中的数据库 HiveQL的数据定义(二):修改数据库 HiveQL的数据定义(三):创建 ...

  8. 大数据数据仓库 Hive (三)

    大数据技术之Hive 一 Hive基本概念 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据 ...

  9. (8)Hive的DDL数据定义(表的操作)

    文章目录 创建表 管理表 外部表 管理表和外部表的使用场景 案例实操 管理表与外部表的互相转换 分区表 分区表基本操作 创建分区表 加载数据到分区表中 单分区查询 增加分区 删除分区 查看分区 分区表 ...

最新文章

  1. mounted钩子函数_vue3.0项目开发(八)新特性之响应式系统watchEffect函数
  2. 初识css预处理器:Sass、LESS
  3. dagger2 依赖注入
  4. linux文件的操作原理简介 以及 实现linux cp命令的代码
  5. python与数据处理_python数据处理:数据合并和Reshaping
  6. [转] C# 绘制报表,使用Graphics.DrawString 方法
  7. 【Tensorflow2.0】关于制作标签遇到的问题小结
  8. mybatis与hibernate的区别及各自应用场景
  9. 【背包问题】基于matlab粒子群算法求解背包问题【含Matlab源码 1343期】
  10. ISM模型的MATLAB代码
  11. 机器学习实验——回归预测算法
  12. 未来教育题库 * **java二级第28套试题** *
  13. java小球与小球碰撞_Java实现小球间的弹性碰撞(考虑小球质量)
  14. 购买《哈利波特》书籍
  15. 交换友情链接要怎么做才能完美
  16. 开课吧 dubbo+zookeeper
  17. 初中计算机实践研究计划,项目式教学法在初中信息技术课堂教学中的研究与实践...
  18. 阅读提升领导力——领导者应该多读书
  19. 神经网络简介ppt英文,人工神经网络简介
  20. 不要再问Python了!

热门文章

  1. Linux-apache的编译安装1
  2. python plt 批量修改全局样式
  3. look与look like
  4. 判断服务器是虚拟机还是物理机方式
  5. mysql免安装版的下载与安装
  6. win10+anaconda3+python3.6+opencv3.1.0
  7. noip模拟赛 寻宝之后
  8. .JQuery中的Ajax
  9. Win10系列:C#应用控件进阶3
  10. HTML5表单那些事