😘温馨提示,本文仅描述了部分Hive建库建表语句,如需要深入学习,请进入CSDN与部分大佬们学习深造
Hive的入门语句
一、Hive的建库语句
1.语法结构如下👇👇👇
create database <name>
comment <database exegesis> -- 可添加关于这个库的注释
location <hdfs Path>; -- 可以指定这个库保存在HDFS的位置
一般建库不指定location时会默认将表的位置放在【hive-site.xml】中已定义过的目录下
2.普通的创建库的方式【后以建dsj库为例】
create database dsj;
3. 具有判断库是否存在的语句
create database if not exists dsj;
4.不仅判断库是否存在,并加入注释
create database if not exists dsj comment '这是存放大数据相关数据的库';
二、查看库的基本语句
1.查看所有Hive库
show databases;
2.查看库的详细信息
show database extended dsj;
3.使用正则的方式查看库
show databases like 'd*';
4.查看目前正在使用的库
select current_database();
5.查看已被创建的表的创建语句
show create database dsj;
三、删除库的基本语句
1.语法结构如下👇👇👇
drop database <Database Name>;
2. 普通的删库语句
drop database dsj;
3.具有判断的删库语句
drop database if exists dsj;
4.如果内部有表的特殊删库语句【具有风险!!!此语句会将连库和表一并删除】
drop database if exists dsj cascade;
drop database dsj cascade;
四、切换库
1. 只有一个语句👇👇👇
use <Database Name>; --与使用库的语句一致
五、创建表的基本语句
1.语法结构如下👇👇👇
create <external> table <if not exists> <Table Name>
(
<column Name> <Type> <comment> --这里写字段名和类型以及注释
)
<partitioned> <by> <[PartitionName] [Partition_Type] [comment]> --这里写动态分区的分区名,类型以及注释
<row> <format> <delimited | AVRO> --以字符格式分隔 或 以序列化的数据格式
<stored> <as> <textfile | orc | parquet> --保存为文本文件及其他格式
<location> <hdfs_path>;
对应的资料
1. PARQUET 格式
PARQUET 是一种开源的列式存储格式,广泛用于大数据处理系统,如Apache Hive、Apache Spark、Apache Drill等。它是基于Apache Arrow项目开发的,适用于处理半结构化或嵌套数据,支持多种数据类型。
特点:
列式存储:数据按列而不是按行存储,这使得针对特定列的查询更加高效,因为只需读取所需的列而不是整个行。
高压缩率:由于列中通常包含重复数据,PARQUET能够非常有效地进行压缩,从而减少存储空间。
支持嵌套数据:PARQUET格式能够高效地存储复杂的数据结构,如嵌套的JSON或Avro对象。
跨平台:支持多种数据处理框架,如Hive、Presto、Impala等。
自描述性:PARQUET文件内嵌了元数据,包含了数据的模式信息,可以方便地进行数据的读取和解析。
使用场景:
适合大数据分析、数据仓库以及机器学习等需要快速读取特定列的场景。
当处理数据包含多层嵌套结构(如JSON)的情况时,PARQUET是理想选择。
示例:
sql
复制代码
CREATE TABLE example_parquet ( id INT, name STRING, age INT ) STORED AS PARQUET;
2. ORC 格式
ORC (Optimized Row Columnar) 是Hadoop生态系统中的一种高效的列式存储格式,最初由Apache Hive项目开发。它与PARQUET类似,也支持高效的数据压缩和快速读取,但在某些方面提供了更优化的性能,尤其是在使用Hive时。
特点:
列式存储:数据按列而不是按行存储,适合快速查询特定列。
高度优化的压缩:ORC格式采用了高级的压缩技术,通常能比PARQUET格式提供更高的压缩率。
支持轻量级的元数据存储:ORC文件包含了大量的元数据(例如列的最小值、最大值、数据类型等),使得查询时能够跳过不必要的数据块,进一步提高查询性能。
查询性能优化:ORC支持“轻量级扫描”,通过存储更精确的统计信息来加速查询,尤其适合大规模数据扫描的场景。
Hive集成:ORC是Hive默认的存储格式,因此在使用Hive时,ORC格式通常表现更好。
使用场景:
主要用于Hive环境,尤其是数据仓库的场景,能够提供极高的压缩比和查询性能。
数据量庞大的分析场景,尤其是对于只需要查询特定列的聚合操作,ORC的优势尤为明显。
示例:
sql
复制代码
CREATE TABLE example_orc ( id INT, name STRING, age INT ) STORED AS ORC;
对比:PARQUET vs ORC
特性
PARQUET
ORC
存储类型
列式存储
列式存储
压缩比
支持高效压缩,但压缩比通常稍低
提供更高的压缩比
查询性能
对于复杂查询和多种数据类型查询较好
在Hive中查询性能更优化,特别是聚合查询
数据类型支持
支持各种复杂数据类型,尤其适合嵌套数据
主要优化针对结构化数据,复杂类型支持较弱
跨平台支持
广泛支持,如Hive、Presto、Spark等
主要与Hive紧密集成,但也支持其他平台
使用场景
适合多种数据处理平台,尤其是嵌套数据
适合Hive环境和大规模的批量数据处理
总结:
PARQUET:更适合多平台支持和复杂数据类型的存储,尤其适合嵌套的JSON数据。
ORC:在Hive环境中表现更优,适合大数据批量处理、优化查询和高效的压缩。
2.创建一个基本的内部表
create table dsj
(
group INT, --组别
name STRING, --组员名字
role STRING --职责
)
row format delimited fields terminated by ','; --以逗号做分隔
3.创建一个基本的外部表
create external table if not exists dsj
(
group INT, --组别
name STRING, --组员名字
role STRING --职责
)
row format delimited fileds terminated by ',' --以逗号做分隔
location '/hive/dsj/file'; --设置保存的路径
4.创建一个基本的分区表
create external table if not exists dsj
(
group INT, --组别
name STRING, --组员名字
role STRING --职责
)
row format delimited fileds terminated by ',' --以逗号做分隔
partitioned by (class STRING) --设置分区为class(班级)
location '/hive/dsj/file'; --设置保存的路径
六、查看表的基本语句
1. 查看当前库的表
show tables;
2.查看未使用时的库中的表
show tables in dsj; --这里的dsj是库名
3.查看库中以指定格式的表
show tables like 'd*';
4.查看表信息
desc dsj;
5.查看表的详细信息【不友好的格式】
desc extended dsj;
6.查看表的详细信息【友好的格式】
desc formatted dsj;
7.查看分区信息
show partitions dsj;
8.查看已建表的建表语句
show create table