Hive的基本SQL操作(DDL篇)

这篇具有很好参考价值的文章主要介绍了Hive的基本SQL操作(DDL篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

目录

​编辑

一、数据库的基本操作

1.1 展示所有数据库

1.2 切换数据库

1.3 创建数据库

1.4 删除数据库

1.5 显示数据库信息

1.5.1 显示数据库信息

1.5.2 显示数据库详情

二、数据库表的基本操作

2.1 创建表的操作

2.1.1 创建普通hive表(不包含行定义格式)

2.1.2 创建自定义行格式的hive表

2.1.3 创建默认分隔符的hive表(^A、^B、^C)

2.1.4 创建hive的外部表(需要添加external和location的关键字)

2.1.5 创建单分区表

2.1.6 创建多分区表

2.1.7 给分区表添加分区列的值

2.1.8 删除分区列的值

2.1.9 修复分区

2.1.9.1 在hdfs创建目录并上传文件

2.1.9.2 创建外部表

2.1.9.3 查询结果(没有数据)

2.1.9.4 修复分区

2.1.9.5 再查询结果(有数据)

2.2 查看表的操作 

2.2.1 查看表结构

2.2.2 查看表分区

2.2.3 查看表详细结构

2.2.4 查看表的类型

2.2.5 查看建表信息

2.3 修改表的操作

2.3.1 修改内部表为外部表

2.3.2 修改表名

2.3.3 更新列

2.3.4 新增或替换列

2.3.5 修改列名、列类型、注释

2.4 删除表的操作

2.4.1 Drop删除

2.4.2 Truncate 删除

2.4.3 drop 和truncate的区别


一、数据库的基本操作

1.1 展示所有数据库

show databases;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

1.2 切换数据库

use database_name;

提示:database_name 指的我们真实存在的数据库名称。

例子:use test;

1.3 创建数据库

语法:

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
      [COMMENT database_comment]
      [LOCATION hdfs_path]
      [WITH DBPROPERTIES (property_name=property_value, ...)];

例子:

create database test;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

注意:当进入hive的命令行开始编写SQL语句的时候,如果没有任何相关的数据库操作,那么默认情况下,所有的表存在于default数据库,在hdfs上的展示形式是将此数据库的表保存在hive的默认路径下,如果创建了数据库,那么会在hive的默认路径下生成一个database_name.db的文件夹,此数据库的所有表会保存在database_name.db的目录下。

1.4 删除数据库

语法:

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

例子:

drop database test;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

1.5 显示数据库信息

1.5.1 显示数据库信息

语法:desc database database_name;

例子:desc databse test;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

1.5.2 显示数据库详情

语法:desc  database EXTENDED database_name;

例子:desc databse EXTENDED test;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

二、数据库表的基本操作

2.1 创建表的操作

2.1.1 创建普通hive表(不包含行定义格式)

create table psn
	(
	id int,
	name string,
	likes array<string>,
	address map<string,string>
	)

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.1.2 创建自定义行格式的hive表

create table psn2
	(
	id int,
	name string,
	likes array<string>,
	address map<string,string>
	)
	row format delimited
	fields terminated by ','
	collection items terminated by '-'
	map keys terminated by ':';

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.1.3 创建默认分隔符的hive表(^A、^B、^C)

create table psn3
	(
	id int,
	name string,
	likes array<string>,
	address map<string,string>
	)
	row format delimited
	fields terminated by '\001'
	collection items terminated by '\002'
	map keys terminated by '\003';

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.1.4 创建hive的外部表(需要添加external和location的关键字)

create external table psn4
	(
	id int,
	name string,
	likes array<string>,
	address map<string,string>
	)
	row format delimited
	fields terminated by ','
	collection items terminated by '-'
	map keys terminated by ':'
	location '/data';

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

在之前创建的表都属于hive的内部表(psn,psn2,psn3),而psn4属于hive的外部表,
内部表跟外部表的区别:
1、hive内部表创建的时候数据存储在hive的默认存储目录中,外部表在创建的时候需要制定额外的目录
2、hive内部表删除的时候,会将元数据和数据都删除,而外部表只会删除元数据,不会删除数据
应用场景:
内部表:需要先创建表,然后向表中添加数据,适合做中间表的存储
外部表:可以先创建表,再添加数据,也可以先有数据,再创建表,本质上是将hdfs的某一个目录的数据跟                hive的表关联映射起来,因此适合原始数据的存储,不会因为误操作将数据给删除掉

2.1.5 创建单分区表

create table psn5(id int,name string,likes array<string>,address map<string,string>)
	partitioned by(gender string)
	row format delimited
	fields terminated by ','
	collection items terminated by '-'
	map keys terminated by ':';

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.1.6 创建多分区表

create table psn6
	(
	id int,
	name string,
	likes array<string>,
	address map<string,string>
	)
	partitioned by(gender string,age int)
	row format delimited
	fields terminated by ','
	collection items terminated by '-'
	map keys terminated by ':';

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

注意:
1、当创建完分区表之后,在保存数据的时候,会在hdfs目录中看到分区列会成为一个目录,以多级目录的形式存在
2、当创建多分区表之后,插入数据的时候不可以只添加一个分区列,需要将所有的分区列都添加值
3、多分区表在添加分区列的值得时候,与顺序无关,与分区表的分区列的名称相关,按照名称就行匹配

2.1.7 给分区表添加分区列的值

alter table table_name add partition(col_name=col_value)

2.1.8 删除分区列的值

alter table table_name drop partition(col_name=col_value)

注意:
1、添加分区列的值的时候,如果定义的是多分区表,那么必须给所有的分区列都赋值
2、删除分区列的值的时候,无论是单分区表还是多分区表,都可以将指定的分区进行删除

2.1.9 修复分区

在使用hive外部表的时候,可以先将数据上传到hdfs的某一个目录中,然后再创建外部表建立映射关系,如果在上传数据的时候,参考分区表的形式也创建了多级目录,那么此时创建完表之后,是查询不到数据的,原因是分区的元数据没有保存在mysql中,因此需要修复分区,将元数据同步更新到mysql中,此时才可以查询到元数据.

2.1.9.1 在hdfs创建目录并上传文件
hdfs dfs -mkdir /ning
hdfs dfs -mkdir /ning/age=10
hdfs dfs -mkdir /ning/age=20
hdfs dfs -put /root/data/data /ning/age=10
hdfs dfs -put /root/data/data /ning/age=20
2.1.9.2 创建外部表
create external table psn11
	(
	id int,
	name string,
	likes array<string>,
	address map<string,string>
	)
	partitioned by(age int)
	row format delimited
	fields terminated by ','
	collection items terminated by '-'
	map keys terminated by ':'
	location '/ning';

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.1.9.3 查询结果(没有数据)
select * from psn11;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.1.9.4 修复分区
msck repair table psn11;
2.1.9.5 再查询结果(有数据)
select * from psn11;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.2 查看表的操作 

2.2.1 查看表结构

desc formatted psn19;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.2.2 查看表分区

show partitions psn19;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.2.3 查看表详细结构

desc formatted psn19;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

desc extended psn19;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.2.4 查看表的类型

desc formatted psn19;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.2.5 查看建表信息

show create table psn11;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

2.3 修改表的操作

2.3.1 修改内部表为外部表

语法:alter table table_name set  TBLPROPERTIES('EXTERNAL'='true');

例子:

alter table psn3 set TBLPROPERTIES('EXTERNAL'='true');

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

查询下表结构,看下表的类型:

desc formatted psn3;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

表的类型变成了EXTERNAL_TABLE,变成了外部表(EXTERNAL_TABLE 是外部表,MANAGED_TABLE是内部表)。

2.3.2 修改表名

语法:alter table table_name RENAME to new_table;

例子:

alter table psn3 rename to new_psn3;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

通过查看数据库中的表,我们发现表psn3成功修改为表new_psn3。

2.3.3 更新列

语法:alter table table_name CHANGE COLUMN col_old_name col_new_name column_type;

例子:

# 我们把new_psn3这张表中的name字段修改成new_name字段,类型是string类型。
alter table new_psn3 change column name new_name string;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

通过查看表结构,我们发现原本的name字段,已经成功修改成了new_name字段,且类型是string 类型。

2.3.4 新增或替换列

语法:alter table table_name ADD|REPLACE COLUMNS (col_name data_type.........);

新增列例子:

#我们往new_psn3这张表中新增一个列,叫age,类型int 类型。
alter table new_psn3 add columns(age int);

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

替换列例子:

#我们将new_psn3这张表中的字段进行替换。
alter table new_psn3 replace columns(id int,name string,likes array<string>,address map<string,string>);

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

通过查看表,我们知道,表中的字段,被我们成功替换了。

2.3.5 修改列名、列类型、注释

语法:alter table table_name change old_column_name new_column_name new_column_type comment '注释';

例子:

#我们将new_psn3 中的name 修改成new_name,类型还是string ,添加注释“名称”
alter table new_psn3 change name new_name string comment '名称';

2.4 删除表的操作

2.4.1 Drop删除

语法:`DROP TABLE [IF EXISTS] table_name;`

例子:

drop table if existt psn2;

提示:使用drop命令删除普通表,hdfs的数据和hive中的元数据会被删除,但是删除外部表时,只会删除元数据,不会删除hdfs中的数据。

2.4.2 Truncate 删除

语法:

`TRUNCATE [TABLE] table_name [PARTITION partition_spec];`

`partition_spec:` (partition_column = partition_col_value, partition_column = partition_col_value, ...)

例子:

在删除之前,我看下我的psn20表存储的数据:

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

可以看多,psn20有两个分区,分别是age=10,age=20.


#删除表中指定分区数据
truncate table psn20 partition(age=10);

删除age=10这个分区后,我们发现psn20这个表只剩下age=20的分区数据。

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

# 删除所有分区数据
truncate table psn20;

Hive的基本SQL操作(DDL篇),# Hive,大数据,# hadoop,hive,sql,hadoop,数据仓库,大数据

提示:

1、从表或分区中删除所有行。可以指定partition_spec一次截断多个分区,省略partition_spec将截断表中的所有分区(即分区表可以通过指定partition_spec删除表中指定的分区数据,如果不指定,则删除整个表中的分区数据)。

2、使用Truncate删除外部表会报错,因为外部表不被Hive所管理,被文件存储系统hdfs管理,所以需要先去hdfs中删除数据文件,再使用Truncate删除表元数据。

2.4.3 drop 和truncate的区别

1)drop 操作会删除元数据(即表不存在)和文件系统的数据(只针对普通表)

2)truncate操作只是会删除表中的数据,不会删除表的元数据(即表还存在,只针对普通表)

3)关于外部表,drop操作只会删除元数据,不会删除文件系统的数据,而truncate操作不能直接操作外部表,因为外部表的不属于Hive管理,直接操作会报错。

更多详细内容,可参考Hive官网DDL语句部分说明文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

好了,今天Hive基本SQL操作(DDL篇)的相关内容就分享到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!文章来源地址https://www.toymoban.com/news/detail-728954.html

到了这里,关于Hive的基本SQL操作(DDL篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 5、Hive:DDL数据定义及操作

    目录 1、DDL数据定义 1.1 创建数据库 1.2 查询数据库 1.3 修改数据库 1.4 删除数据库 1.5 创建表 1.5.1 管理表(内部表) 1.5.2 外部表 1.5.3 管理表与外部表的互相转换 1.6 修改表 1.6.1 重命名表 1.6.2 增加、修改和删除表分区 1.6.3 增加/修改/替换列信息 1.7 删除表 2 DML数据操作 2.1 数据导

    2024年02月05日
    浏览(35)
  • Hive(14):Database|schema(数据库) DDL操作

    1 Create database Hive中DATABASE的概念和RDBMS中类似,我们称之为数据库。在Hive中, DATABASE和SCHEMA是可互换的,使用DATABASE或SCHEMA都可以。 COMMENT:数据库的注释说明语句 LOCATION:指定数据库在HDFS存储位置,默认/user/hive/warehouse WITH DBPROPERTIES:用于指定一些数据库的属性配置。 下面

    2024年02月11日
    浏览(51)
  • 大数据之Hadoop数据仓库Hive

    Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 Hadoop 上运行。 特点: 简单、容易上手 (提供了类似 sql 的查询语言 hql),使得精通 sql 但是不了解 Java 编程的人也

    2024年02月01日
    浏览(38)
  • 大数据技术之Hadoop学习(七)——Hive数据仓库

    目录 素材 一、数据仓库简介 1、数据仓库的认识 (1)数据仓库是面向主题的。 (2)数据仓库是随时间变化的。 (3)数据仓库相对稳定 (4)OLTP和OLAP 2、数据仓库的结构 (1)数据源 (2)数据存储及管理 (3)OLAP 服务器 (4)前端工具 3、数据仓库的数据模型 (1)星状模

    2024年02月17日
    浏览(33)
  • Hive 中执行 SQL语句 报错 :FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.

    在命令输入 hive 启动后: 解决方案: **错误原因:**服务端未开启服务,在hive服务端使用命令:hive --service metastore 然后再启动hive , 就可以正常使用sql语句了。 **其他原因:**有的是mysql没有启动,下面有完整的hive 启动流程 启动hive 流程(很多问题往往是少了步骤导致的)

    2024年02月15日
    浏览(43)
  • Hive常用DDL操作

    本专栏案例数据集链接:   https://download.csdn.net/download/shangjg03/88478038 语法: 示例: 语法: 示例: 语法: 默认行为是 RESTRICT,如果数据库中存在表则删除失败。要想删除库及其中的表,可以使用 CASCADE 级联删除。 示例: 使用 `desc format  emp_external` 命令可以查看表的详

    2024年02月08日
    浏览(31)
  • 4、hive的使用示例详解-事务表、视图、物化视图、DDL(数据库、表以及分区)管理详细操作

    1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解 2、hive相关概念详解–架构、读写文件机制、数据存储 3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表 4、hive的使用示例详解-事务表、视图、物化视图、DDL

    2024年02月09日
    浏览(42)
  • Hive Sql优化之一次from查询多次insert into操作

    例:统计字段空值率 优化点:一次map多个reduce,有效节省了map操作 流程如下: 1.创建表; 2.插入数据; 3.参照下面语句;

    2024年02月17日
    浏览(52)
  • 大数据 Hive - 实现SQL执行

    MapReduce的出现大大简化了大数据编程的难度,使得大数据计算不再是高不可攀的技术圣殿,普通工程师也能使用MapReduce开发大数据程序。 但是对于经常需要进行大数据计算的人,比如从事研究商业智能(BI)的数据分析师来说,他们通常使用SQL进行大数据分析和统计,MapRed

    2024年02月02日
    浏览(31)
  • Java从入门到精通24==》数据库、SQL基本语句、DDL语句

    2023.8.27 数据库是一个电子化储存数据的系统,它能够以结构化形式组织、存储和管理数据,使得数据的访问、操作和管理变得更为高效、可靠和安全 数据库通常包括数据、数据结构、查询语言、数据存储和检索引擎等多个组成部分,可分为关系型数据库、非关系型数据库等

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包