Hive DDL DML SQL操作

概述:

hive是什么呢?

(1).由Facebook开源,最初用于解决海量结构化的日志数据统计问题 
(2).是一个构建在Hadoop之上的数据仓库 (虽然是数据仓库,但是它并不存储任何数据)
(3).Hive定义了一种类似于SQL查询语言:HQL(非常类似于MySQL中的SQL语句,同时做了扩展) 
(4).通常用于离线数据处理(与MapReduce原理一样,只不过它是将HQL语句转换成MapReduce程序运行) 
(5).可以认为是一个HQL=>MapReduce的语言翻译器 
(6).底层支持多种不同的执行引擎(默认是MapReduce) 
(7).支持不同的压缩格式、存储格式以及自定义函数 
(8).Hive中的数据库及表就是HDFS中的目录/文件夹,数据是文件,元数据信息可以存储在任意的一个关系型数据库中(比如:MySQL、SqlServer、Oracle等,默认是Derby),数据存储在HDFS中

 

Hive的工作原理简单来说就是一个查询引擎

HIve构建于Hadoop集群之上

1)HQL中对查询语句的解释、优化、查询都是由HIve完成的

2)所有的数据都是存储在Hadoop(HDFS)中

3)HQL语句全部转化为MapReduce任务,在Hadoop中执行,当然也有一些没有MR任务的如:select * from A

4)Hadoop和HIve都是采用UTF-8来进行编码的

 

Hive中的基本数据类型

红色部分为最常用

è¿éåå¾çæè¿°

Hive中的复杂数据类型

由上图可见,Hive中有三种复杂的数据类型:Array   Map   Struct  其中Array 和Map与Java中Array和Map相似,

而Struct与C语言中的Struct类型,它封装了一个命名字段的集合,复杂数据类型允许任意层次的嵌套。

复杂数据类型的声明必须用尖括号声明其中的数据类型,参考如下:

CREATE TABLE A(
	col1 ARRAY< INT>,
	col2 MAP< STRING,INT>,
	col3 STRUCT< a:STRING,b:INT,c:DOUBLE>
)

 

Hive架构图

 

Hive结构体系主要分为以下几个部分:

(1)用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 WUI是通过浏览器访问Hive。

(2)Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

(3)解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。

(4)Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(包含*的查询,比如select * from tbl不会生成MapRedcue任务)。

Hive的执行命令:因为Hive是基于Hadoop之上的,我们首先启动Hadoop集群,然后去hive目录中bin/下的hiveserver2

[hadoop@Master hive]$ bin/hiveserver2

hiveserver2启动后,我们再去启动beeline命令,远程服务(默认端口号 10000)

[hadoop@Master hive]$ bin/beeline -u jdbc:hive2://Master:10000 -n hadoop

hive的远程服务端口号也可以在hive-default.xml文件中配置,修改hive.server2.thrift.port对应的值即可。

< property>
    < name>hive.server2.thrift.port< /name>
    < value>10000< /value>
    < description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.< /description>
< /property>

 

Hive数据存储的概念:

  1、Hive中所有的数据都存储在 HDFS 中,没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)

  2、只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。

  3、Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket。

       (1):db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹

    (2):table:在hdfs中表现所属db目录下一个文件夹

    (3):external table:外部表, 与table类似,不过其数据存放位置可以在任意指定路径

        普通表: 删除表后, hdfs上的文件都删了

        External外部表删除后, hdfs上的文件没有删除, 只是把文件删除了

    (4): partition:在hdfs中表现为table目录下的子目录

    (5):bucket:桶, 在hdfs中表现为同一个表目录下根据hash散列之后的多个文件, 会根据不同的文件把数据放到不同的文件中

 

写到这里,我们开始真正进入到Hive来进行实际的操作,如果大家学过SQL语句的话会感觉到很简单,基本相同。

创建数据库:Create

Create database mydb; //创建一个数据库  //对应的HDFS路径为:/user/hive/warehouse/mydb.db

是否存在关键字:if no

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Hive表的DDL操作是指对Hive表进行定义、创建、修改和删除的操作。通过HiveDDL语句可以方便地管理和操作Hive表,在数据仓库中进行数据的存储和查询分析。 首先,Hive表的DDL操作包括创建表、删除表、修改表结构等。通过CREATE TABLE语句可以在Hive中创建新的表,并指定表的名称、列信息、分区信息以及其他属性。而DROP TABLE语句可以用来删除已存在的表,释放存储空间。此外,Hive还支持ALTER TABLE语句,允许对表进行修改,比如增加、删除、重命名列等操作。 其次,Hive表的DDL操作还包括对表的分区管理。通过ALTER TABLE语句,可以在表中添加、删除、修改分区,以便更加灵活地组织和管理数据。 再次,DDL操作还包括对表的存储格式和存储位置的定义。通过ALTER TABLE语句,可以修改表的存储格式,比如将表存储为文本文件或Parquet文件等。同时,也可以通过ALTER TABLE语句来指定表的存储位置,可以将数据存储到HDFS中的指定目录,或者关联其他外部存储系统。 最后,Hive表的DDL操作还支持对表的权限管理。通过GRANT和REVOKE语句,可以授权和撤销用户对表的访问、修改、删除等权限,保证数据的安全性和访问的控制。 综上所述,Hive表的DDL操作提供了一系列强大的功能,可以方便地对表进行定义、创建、修改和删除。通过DDL操作,我们可以更好地管理和维护数据仓库中的表,并灵活地进行数据查询和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值