Hive(六):HQL DDL

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

时间: 2024-10-12 20:05:47

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

Hive(七):HQL DML

HQL DML 主要涉到对Hive表中数据操作,包含有:load.INSERT.DELETE.EXPORT and IMPORT,详细资料参见:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML 目录: Loading files into tables Inserting data into Hive Tables from queries Writing data into the filesystem fr

Hibernate六 HQL查询

HQL查询一 介绍1.HQL:Hibernate Query Language,是一种完全面向对象的查询语言.使用Hibernate有多重查询方式可供选择:hibernate的HQL查询,也可以使用条件查询,甚至使用原生的SQL查询语句.Hibernate还提供了一种数据过滤功能,这些都用于删选目标数据.2.查询步骤:(1)获取Hibernate Session对象(2)编写HQL语句(3)以HQL语句为参数,调用Session的createQuery()方法创建查询对象(4)如果HQL语句包含

Hibernate入门(六)---------HQL语句

Query: 代表面向对象的一个Hibernate查询操作.在Hibernate中,通常使用session.createQuery()方法接收一个HQL语句,然后调用Query的 list()或uniqueResult()方法执行查询.所谓的HQL是Hibernate Query Language缩写,其语法很像SQL,但它是完全面向对象的. 在Hibernate中使用Query对象的步骤,具体: 1.获得Hibernate的Session对象 2.编写HQL语句 3.调用session.cre

Hive 5、Hive 的数据类型 和 DDL Data Definition Language) (1)

官方帮助文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL Hive的数据类型 -- 扩展数据类型data_type : primitive_type | array_type | map_type | struct_type | union_type -- (Note: Available in Hive 0.7.0 and later) array_type : ARRAY < data_type >

hive的基本语法汇总(hql)

2019/2/20 星期三 hive的基本语法汇总(hql)----------------------------------------------Hive学习3:Hive三种建表语句详解 https://blog.csdn.net/qq_36743482/article/details/78383964Hive建表方式共有三种:1.直接建表法例如:create table table_name(col_name data_type);2.查询建表法例如:通过AS 查询语句完成建表:将子查询

Hive 5、Hive 的数据类型 和 DDL Data Definition Language)

官方帮助文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL -- 扩展数据类型 data_type : primitive_type | array_type | map_type | struct_type | union_type -- (Note: Available in Hive 0.7.0 and later) array_type : ARRAY < data_type > map_type

一、hive基本原理和使用

一.概述 1.什么是hive ? 由Facebook开源用于解决海量结构化日志的数据统计.是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能.本质上其实就是将HQL/SQL转化为MapReduce或者spark任务执行,然后返回结果.有以下几个本质:1)Hive处理的数据存储在HDFS.默认在在/ user/hive/warehouse/<databaseName>.db/<tableName>/ 下创建对应文件2)Hive分析数据底层

初步认识Hive

Hive是构建在hadoop之上的数据仓库. 1)数据计算是MapReduce 2)数据存储是HDFS 认识 Hive        Hive 是基于 Hadoop 构建的一套数据仓库分析系统,它提供了丰富的 SQL 查询方式来分析存储在 Hadoop  分布式文件系统中的数据, 可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行,通过自己的 SQL 去 查询分析需要的内容,这套 SQL 简称 Hive SQL,

Hive笔记整理(一)

[TOC] Hive笔记整理(一) Hive Hive由facebook贡献给Apache,是一款建立在Hadoop之上的数据仓库的基础框架. 数据仓库 特点--关于存放在数据仓库中的数据的说明: 是能够为企业的各个级别的决策提供数据支撑的数据 其实说白了,就是一个存放数据的仓库 数据库和数据仓库之间的区别 现代数据仓库,是构建在数据库之上的,使用数据库作为载体存放数据. 数据仓库着重强调的是存放的历史数据,数据库着重强调的是存放在线的数据. 数据仓库着重强调的是OLAP的操作,数据库着重强调的