• hive从入门到放弃(二)——DDL数据定义


    前一篇文章,介绍了什么是 hive,以及 hive 的架构、数据类型,没看的可以点击阅读:hive从入门到放弃(一)——初识hive
    今天讲一下 hive 的 DDL 数据定义

    创建数据库

    CREATE DATABASE [IF NOT EXISTS]① database_name
    [COMMENT database_comment]②
    [LOCATION hdfs_path]③
    [WITH DBPROPERTIES (property_name=property_value, ...)]④;
    

    ①若存在则不创建,不存在则创建

    ②数据库注释

    ③数据库映射到HDFS的数据路径

    ④可以增加其它数据库配置

    查询数据库

    show databases --显示数据库 
    desc database db_name  --查看数据库信息
    desc database extended db_name  --查看数据库详细信息
    

    修改数据库属性

    alter database db_hive 
    set dbproperties('createtime'='20170830');
    

    用户可以使用 ALTER DATABASE 命令为某个数据库的 DBPROPERTIES 设置键-值对属性值,
    来描述这个数据库的属性信息。

    删除数据库

     drop database [if exists] database_name [cascade]
    

    cascade 命令表示强制删除

    创建表

    CREATE [EXTERNAL]① TABLE [IF NOT EXISTS] table_name
    [(col_name data_type [COMMENT col_comment], ...)]
    [COMMENT table_comment]
    [PARTITIONED BY② (col_name data_type [COMMENT col_comment], ...)]
    [CLUSTERED BY③ (col_name, col_name, ...)
    [SORTED BY④ (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
    [ROW FORMAT⑤ row_format]
    [STORED AS⑥ file_format]
    [LOCATION⑦ hdfs_path]
    [TBLPROPERTIES⑧ (property_name=property_value, ...)]
    [AS⑨ select_statement | like⑩ table_name]
    

    ① EXTERNAL关键字可以创建一个外部表,当删除表的时候,只删除描述表的元数据,不删除存在于 HDFS 上的数据;

    与之相反的是内部表,或者叫管理表,管理表在删除的时候会把 HDFS 上的数据一起删除;

    这两者可以互相转换:
    alter table table_name set tblproperties('EXTERNAL'='TRUE');

    ② PARTITIONED BY 用以创建分区表,需要指定列用于分区,一个分区对应一个目录,可以提高效率;

    ③ CLUSTERED BY 创建分桶表,分桶将整个数据按照某列属性值的 hash 值进行区分;

    ④ SORTED BY 对桶中的一个或多个列另外排序;

    ⑤ ROW FORMAT 用于指定数据切分格式;官方的用法:

    ⑥ STORED AS 用以指定存储文件类型,比如 parquet、textfile 等;

    ⑦ LOCATION 指定文件存储在 HDFS 上的路径;

    ⑧ TBLPROPERTIES 可用于添加表的其它属性,一般是键值对形式;

    ⑨ AS 后面接的是查询语句,根据查询结果创建表;

    ⑩ LIKE 后接表名,复制表结构,但不复制数据。

    修改表

    -- 更新列
    ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name 
    column_type [COMMENT col_comment] [FIRST|AFTER column_name]
    
    -- 增加和替换列
    ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT 
    col_comment], ...)
    

    ADD 是代表新增一字段,字段位置在所有列后面(partition 列前);REPLACE 则是表示替换表中所有字段。

    删除表

    drop table table_name;
    

    小结

    本文主要展示了 hive 的 DDL 用法,包括数据库和表的语法。实际上这里面有部分内容是简单概括,比如分区分桶表的含义作用以及用法,这些后面的文章我会展开描述,可以持续关注【大数据的奇妙冒险】,获取更多知识!

  • 相关阅读:
    [LeetCode] Sort Colors
    [LeetCode] Trapping Rain Water
    [LeetCode] Sudoku Solver
    [LeetCode] Valid Sudoku
    [LeetCode] Candy
    [LeetCode] Permutation Sequence
    [名词解释]Constant Amortized Time
    回溯法 子集树和排序树
    HDU 4859 海岸线 最小割
    敏捷开发一千零一问:怎样处理重要但不明白的任务?
  • 原文地址:https://www.cnblogs.com/lyuzt/p/16013121.html
Copyright © 2020-2023  润新知