HQL语法基于 SqlLinehttp://sqlline.sourceforge.net/),DDL主要包含数据库、函数、视图的创建、修改、删除,参考资料:(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL), 语法关键字:

  • CREATE DATABASE/SCHEMA, TABLE, VIEW, FUNCTION, INDEX
  • DROP DATABASE/SCHEMA, TABLE, VIEW, INDEX
  • ALTER DATABASE/SCHEMA, TABLE, VIEW
  • SHOW DATABASES/SCHEMAS, TABLES, TBLPROPERTIES, PARTITIONS, FUNCTIONS, INDEX[ES], COLUMNS, CREATE TABLE
  • DESCRIBE DATABASE/SCHEMA, table_name, view_name

 DataBase:


  • create 语法:

    CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
    [COMMENT database_comment]
    [LOCATION hdfs_path]
    [WITH DBPROPERTIES (property_name=property_value, ...)];
  • 创建数据库:           create database if not exists demo;
  • 显示数据有数据:     show database;
  • 按条件过滤:           show databases like 'dem*';   (注意通配符是*而不是%)
  • 数据库描述:           create database hello with dbproperties('creator'='tgzhu','date'='2016-07-12');
  • 显示数据库:             describe database hello;   (基本信息,描述信息看不到的)
  • 显示数据库信息:      describe database extended  hello;


     drop 语法:

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
  • RESTRICT:默认的行为,即当数据库不为空时,不允许删除的
  • CASCADE:先删除表,再删除数据库
  • 删除数据库: drop database if exists hello;
  • 删除数据库:drop database if exists hellp cascade;

DataTable:


  • CreateTable 语法:

    CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
    [(col_name data_type [COMMENT col_comment], ...)]
    [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
    [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)]
    [SKEWED BY (col_name, col_name, ...) ]
    ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
    [STORED AS DIRECTORIES]
    [
    [ROW FORMAT row_format]
    [STORED AS file_format]
    | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]
    ]
    [LOCATION hdfs_path]
    [TBLPROPERTIES (property_name=property_value, ...)]
    [AS select_statement]; CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
    LIKE existing_table_or_view_name
  • 说明:表名和列名是大小写不敏感,但SerDe和属性名正好相反
  • 切换数据库: use hello;
  • 创建表: 手工创建简单表
    create table if not exists students(
    ID string,
    Code string,
    Name string,
    Score decimal(20,8),
    address struct<street:string,city:string,state:string,zip:string>
    ) tblProperties('creator'='tgzhu','version'='1.0');
  • 复制表结构:在已经存在表基础上建表
    create table if not exists student1 like students;
  • CTAS(Create table as Select)表: 创建表并加载查询结果到表中,限制(目标表不能是分区表、外部表、桶表)
  • 试着执行下面的语句:create external table empdemo1 as select * from employee;
  • Re:FAILED: SemanticException [Error 10070]: CREATE-TABLE-AS-SELECT cannot create external table (state=42000,code=10070)
  • show、describe 与上面描述的 database 的语法一致,关键字换为: table, 如: show tables;  describle students、describe extended students;
  • 显示指定字段信息:  describe students.address;
  • 外部表:参见上一章 Hive(五):hive与hbase整合

分区表:


  • 一个表可以拥有一个或者多个分区,每个分区以文件夹的形式单独存在表文件夹的目录下。分区是以字段的形式在表结构中存在,通过describe table命令可以查看到字段存在,但是该字段不存放实际的数据内容,仅仅是分区的表示。在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念。表中的一个 Partition 对应于表下的一个目录,Partition 就是辅助查询,缩小查询范围,加快数据的检索速度和对数据按照一定的规格和条件进行管理
  • 示例:
    create table student_p(
    id string,
    name string,
    age int,
    birthday date
    ) partitioned by(region string, sex string);

 桶表:


  • 对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。Hive也是 针对某一列进行桶的组织。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。
  • 创建桶表的目的:
    1. 获得更高的查询处理效率,比如JOIN操作,在JOIN操作两个表有一个相同的列,如果对这两个表都进行了桶操作,那么将保存相同列值的桶进行JOIN操作就可以,可以大大较少JOIN的数据量
    2. 使取样更高效,在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分数据上试运行查询,会带来很多方便
  • 示例建表语句如下:

    create table student_c(
    id string,
    name string,
    age int,
    birthday date
    )
    partitioned by(region string, sex string)
    clustered by(id) sorted by(birthday) into 64 buckets;

Hive(六):HQL DDL的更多相关文章

  1. 在Hive中执行DDL之类的SQL语句时遇到的一个问题

    在Hive中执行DDL之类的SQL语句时遇到的一个问题 作者:天齐 遇到的问题如下: hive> create table ehr_base(id string); FAILED: Execut ...

  2. Hive的HQL(2)

    Hive基础(1) Hive的HQL(2) 1. HQL的数据定义,HQL是一种SQL方言,支持绝大部分SQL-92标准.但是和SQL的差异为:不支持行级别的操作,不支持事务等.HQL的语法接近于My ...

  3. Hive(七):HQL DML

    HQL DML 主要涉到对Hive表中数据操作,包含有:load.INSERT.DELETE.EXPORT and IMPORT,详细资料参见:https://cwiki.apache.org/con ...

  4. Hive 编程之DDL、DML、UDF、Select总结

    Hive的基本理论与安装可参看作者上一篇博文<Apache Hive 基本理论与安装指南>. 一.Hive命令行 所有的hive命令都可以通过hive命令行去执行,hive命令行中仍有许多 ...

  5. Hive的HQL语句及数据倾斜解决方案

    [版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/51675005 作者: 朱培          ID ...

  6. Apache Hive 执行HQL语句报错 ( 10G )

    # 故障描述: hive > , ) as uuid, count(distinct(request_body["uuid"])) as count from log_bft ...

  7. Hive之 Hql语法解析

    Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...

  8. Hive(六)hive执行过程实例分析与hive优化策略

    一.Hive 执行过程实例分析 1.join 对于 join 操作:SELECT pv.pageid, u.age FROM page_view pv JOIN user u ON (pv.useri ...

  9. hive 标准hql建表语法格式

    一.标准hql建表语法格式1.官方标准语法:(hql不区分大小写,下面[]里的属性是可选属性) 具体参考官网界面:HIVE官网建表说明文档 CREATE [EXTERNAL] TABLE [IF NO ...

随机推荐

  1. 学习进度条<第一周>

    所花时间(包括上课):8小时(上课4,编程0.5,写博客1,读书2.5) 代码量:90行 博客量:4篇 了解到的知识点:什么是BUG                 哪怕有几万分之一的概率也要考虑安全 ...

  2. WCF之多个协定

    多个协定”示例演示如何在一个服务上实现多个协定,以及如何配置终结点以便与实现的每个协定进行通信 1.服务端代码如下(服务实现了两个协定,增加了黄色所示代码): class Program { stat ...

  3. iOS-Block两个界面传值

    先说一下思路: 首先,创建两个视图控制器,在第一个视图控制器中创建一个Label和一个Button,其中Label是为了显示第二个视图控制器传过来的字符串, Button是为了push到第二个界面. ...

  4. js基础知识(pomelo阅读)

    0,node.js调试: http://www.noanylove.com/2011/12/node-the-inspector-debugging-node-js/   1,读取配置文件: var ...

  5. php 函数ignore_user_abort()

    ignore_user_abort()  设置与客户机断开是否会终止脚本的执行. 工作中看到这样一个类似的方法,查资料理解了一下: 一个的ignore_user_abort()的例子,配合set_ti ...

  6. 学习使用:before和:after伪元素

    http://www.w3cplus.com/css3/learning-to-use-the-before-and-after-pseudo-elements-in-css.html

  7. JQuery中的push和join

    和JS 中的JOIN 方法一样,将一数组按照JOIN的参数连接起来. 比如: var arr = [ "a", "b", "c", &quo ...

  8. ztong上机3

    二.实验名称:数字图像处理matlab上机 三.实验学时:2学时 四.实验目的:(详细填写) 掌握几何变换 掌握插值 理解配准的概念 五.实验内容 (1)首先自己写一个对图像进行旋转和缩放的复合变换程 ...

  9. hihoCoder #1033 : 交错和 (数位Dp)

    题目大意: 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an - 1,定义交错和函数: f(x) = a0 - a1 + a2 - ... + ( - 1)n - ...

  10. C# WinForm获取当前路径汇总

    摘自:http://greatverve.cnblogs.com/archive/2011/12/15/winform-path.html Winform获取应用程序的当前路径的方法集合,具体如下,值 ...