Hive的基本操作(三)

本文详细介绍了Hive的DDL(数据定义语言)和DML(数据操作语言)操作,包括创建和管理库、表,以及数据的装载、插入、查询等。重点讨论了库和表的创建、修改、删除,以及分区表和分桶表的使用。此外,还涵盖了数据的加载、插入、导出和查询,以及Hive的JOIN查询操作。
摘要由CSDN通过智能技术生成

Hive的基本操作(三)

 

1.DDL操作

Hive的hql语句支持SQL一般语法,大致与SQL相似。

SQL语言包括四种主要程序设计语言类别的语句:

数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事物控制语言(TCL)

DDL(Data Definitition Language):数据库模式定义语言

1.1.库操作

1.创建库:

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name

[COMMENT database_comment]  //创建库带注释

[LOCATION hdfs_path]

[WITH DBPROPERTIES (property_name=property_value, ...)]; //创建库指定属性

create databases dbname;   /  create databases if not exists dbname;

创建库的时候带注释:create database if not exists dbname comment 'create my db named dbname';

创建带属性的库 create database if not exists dbname with dbproperties ('a'='aaa','b'='bbb');

2.查看库

查看所有库:show databases;

显示数据库的详细属性信息 语法:desc database [extended] dbname;

查看正在使用哪个库:select current_database();

3.删除库

删除库操作: drop database dbname;      /  drop database if exists dbname;

*默认情况下,hive 不允许删除包含表的数据库,有两种解决办法

1、 手动删除库下所有表,然后删除库

2、 使用 cascade 关键字 drop database if exists dbname cascade;

默认情况下就是 restrict drop database if exists myhive ==== drop database if exists myhive restrict

4.切换库操作: 语法:use database_name

1.2.表操作

1.创建表

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]    //指定表的数据存储路径 

语法解析:

默认建表为内部表 ,加关键字EXTERNAL,新建为外部表,在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删 除数据。(ps:公共数据一般都是用外部表)

表的数据存储路径都是可以通过 location 指定的!!!!!!

推荐方式: 1、 创建内部表的时候,最好别指定 location,就存储在默认的仓库路径 2、 如果要指定外部路径,那么请创建该表为外部表

PARTITIONED BY:建分区表关键字

CLUSTERED BY :建分桶表关键字  [SORTED BY (col_name [ASC|DESC], ...)]  指定每个桶的排序规则INTO num_buckets BUCKETS]  分的桶的个数 

[ROW FORMAT row_format] 指定分割符

列分割符:fields terminated by ' , ' 

行分割符:lines terminated by ' , '

元素分割符:items terminated by ' , '

[STORED AS file_format]  指定表中读取文件的类型 默认 textfile

textfile 文本格式    rcfile 行列存储相结合的存储方式   sequencefile 二进制文件格式

LOCATION:指定数据文件存放的 HDFS 目录,不管内部表还是外表,都可以指定。不指 定就在默认的仓库路径。

最佳实践: 如果创建内部表请不要指定 location 如果创建表时要指定 location,请创建外部表。

列举四个类型表的建表示例:

内部表:

create table if not exists student(id int,name string,sex string,age int,department string) row format delimited fields terminated by ',' STORED as textfile ; //若指定了hdfs存储路径,则会覆盖配置文件中默认设置的目录路径

Hive是一个基于Hadoop的数据仓库工具,用于进行大规模数据分析和查询。下面是Hive的一些基本操作命令: 1. 使用命令`show databases;`可以查看当前所有的数据库。 2. 使用命令`CREATE DATABASE park;`可以创建一个名为park的数据库。实际上,创建数据库相当于在Hadoop的HDFS文件系统中创建了一个目录节点,统一存在`/usr/hive/warehouse`目录下。 3. 使用命令`USE park;`可以进入park数据库。 4. 使用命令`show tables;`可以查看当前数据库下的所有表。 5. 使用命令`CREATE TABLE stu (id INT, name STRING);`可以创建一个名为stu的表,其中包含id和name两个字段。在Hive中,使用的是STRING类型来表示字符,而不是CHAR或VARCHAR类型。所创建的表实际上也是HDFS中的一个目录节点。默认情况下,所有在default数据库下创建的表都直接存在`/usr/hive/warehouse`目录下。 6. 使用命令`INSERT INTO TABLE stu VALUES (1, 'John');`可以向stu表中插入数据。HDFS不支持数据的修改和删除,但在Hive 2.0版本后开始支持数据的追加,可以使用`INSERT INTO`语句执行追加操作。Hive支持查询和行级别的插入,但不支持行级别的删除和修改。实际上,Hive的操作是通过执行MapReduce任务来完成的。插入数据后,我们可以在HDFS的stu目录下发现多了一个文件,其中存储了插入的数据。因此,可以得出结论:Hive存储的数据是通过HDFS的文件来存储的。 7. 使用命令`SELECT id FROM stu;`可以查询stu表中的数据,并只返回id字段的值。 需要注意的是,如果想在HDFS目录下自己创建一个分区,并在该分区下上传文件,需要执行一些额外的操作。首先,手动创建的分区在Hive中是无法使用的,因为原数据库中没有记录该分区的信息。要让自己创建的分区被识别,需要执行命令`ALTER TABLE book ADD PARTITION (category = 'jp') LOCATION '/user/hive/warehouse/park.db/book/category=jp';`。这条命令的作用是在原数据表book中创建对应的分区信息。另外,还可以使用命令`ALTER TABLE book****** 'nn');`来修改分区。 希望以上信息能对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值