【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)

简介: 【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)

Hive基础SQL语法

1:DDL操作

DDL是数据定义语言,与关系数据库操作相似,

创建数据库

CREATE DATABASE|SCHEMA [IF NOT EXISTS] database_name

显示数据库

SHOW databases;

查看数据库详情

DESC DATABASE|SCHEMA database_name

切换数据库

USE database_name

修改数据库

ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value,...)

删除数据库

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

Hive在创建表时默认创建内部表,将数据移动到数据仓库指向的路径,而创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变,Hive删除表时,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据,创建表的语法如下

CREATE [TEMPORARY] [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]

复制数据表

语法只会复制表的结构,不会复制表中的数据。另外,如果创建的表名已经存在,与创建数据仓库一样会抛出异常,用户可以使用“IF NOT EXISTS”选项来忽略这个异常。

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name LIKE existing_table_or_view_name [LOCATION hdfs_path];

分区表是按照属性在文件夹层面给文件更好的管理,实际上就是对应一个HDFS文件系统上的独立文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。

创建Hive表

CREATE  TABLE teacher_partition
(id string,
 name string)
 PARTITIONED BY (country string, state string);

set hive.exec.dynamic.partition=true; #开启动态分区,默认是false

set hive.exec.dynamic.partition.mode=nonstrict; #开启允许所有分区都是动态的,否则必须要有静态分区才能使用

set hive.exec.max.dynamic.partitions.pernode=1000; #动态分区最大数量

向分区表插入数据,准备文件data.txt,内容如下

1,tom,US,CA

2,jack,US,CB

3,mike,CA,BB

4,ariana ,CA,BC

创建中间表teacher,并将data.txt数据导入到teacher表中,利用dfs -ls /hive/warehouse/bigdata.db/teacher 命令查看teacher表在hadoop中的存储信息,可以看到建立的内部表teacher将data.txt移动到数据仓库指向的路径。

执行以下命令向分区表中插入数据。

INSERT INTO TABLE teacher_partition PARTITION (country, state) SELECT id,name,city,state FROM teacher;

创建桶表

表分区的基础上,按某一列的值将记录进行分桶存放,即分文件存放,即将大表分解成一系列小表,这样,涉及到Join操作时,可以在桶与桶间关联即可,大大减小Join的数据量,提高执行效率

1:开启分桶功能

hive> set hive.enforce.bucketing = true;
hive> set mapreduce.job.reduces=4;

2:创建桶表

create table teacher_bucket(
 id string,
 name string,
 country string,
 state string)
 clustered by(id) into 4 buckets;

桶表不能通过load的方式直接加载数据,只能从另一张表中插入数据,执行如下命令insert into teacher_bucket select * from teacher,在创建桶表之前,要先通过“set hive.enforce.bucketing=true;”命令开启分桶的功能

2:DML操作

DML即数据操作语言,是用来对Hive数据库中的数据进行操作的语言,数据操作主要是如何向表中装载数据和如何将表中的数据导出,主要操作命令有load insert等等基本与标准SQL相同

3:DQL操作

DQL即数据查询语言,实现数据的简单查询,主要操作命令有select where等,可以在查询时对数据进行排序,分组等操作

创作不易 觉得有帮助请点赞关注收藏~~~

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
9月前
|
SQL 分布式计算 大数据
大数据新视界 --大数据大厂之Hive与大数据融合:构建强大数据仓库实战指南
本文深入介绍 Hive 与大数据融合构建强大数据仓库的实战指南。涵盖 Hive 简介、优势、安装配置、数据处理、性能优化及安全管理等内容,并通过互联网广告和物流行业案例分析,展示其实际应用。具有专业性、可操作性和参考价值。
大数据新视界 --大数据大厂之Hive与大数据融合:构建强大数据仓库实战指南
|
7月前
|
SQL JSON 分布式计算
Spark SQL架构及高级用法
Spark SQL基于Catalyst优化器与Tungsten引擎,提供高效的数据处理能力。其架构涵盖SQL解析、逻辑计划优化、物理计划生成及分布式执行,支持复杂数据类型、窗口函数与多样化聚合操作,结合自适应查询与代码生成技术,实现高性能大数据分析。
|
11月前
|
SQL 分布式计算 IDE
如何在IDE中通过Spark操作Hive
通过以上方法和代码示例,你可以在IDE中成功通过Spark操作Hive,实现大规模数据处理和分析。确保理解每一步的实现细节,应用到实际项目中时能有效地处理各种复杂的数据场景。
571 28
|
11月前
|
SQL 分布式计算 关系型数据库
基于云服务器的数仓搭建-hive/spark安装
本文介绍了在本地安装和配置MySQL、Hive及Spark的过程。主要内容包括: - **MySQL本地安装**:详细描述了内存占用情况及安装步骤,涉及安装脚本的编写与执行,以及连接MySQL的方法。 - **Hive安装**:涵盖了从上传压缩包到配置环境变量的全过程,并解释了如何将Hive元数据存储配置到MySQL中。 - **Hive与Spark集成**:说明了如何安装Spark并将其与Hive集成,确保Hive任务由Spark执行,同时解决了依赖冲突问题。 - **常见问题及解决方法**:列举了安装过程中可能遇到的问题及其解决方案,如内存配置不足、节点间通信问题等。
基于云服务器的数仓搭建-hive/spark安装
|
11月前
|
SQL 分布式计算 资源调度
Dataphin功能Tips系列(48)-如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
422 4
|
SQL 分布式计算 Java
Spark SQL向量化执行引擎框架Gluten-Velox在AArch64使能和优化
本文摘自 Arm China的工程师顾煜祺关于“在 Arm 平台上使用 Native 算子库加速 Spark”的分享,主要内容包括以下四个部分: 1.技术背景 2.算子库构成 3.算子操作优化 4.未来工作
1731 0
|
SQL JSON 分布式计算
【赵渝强老师】Spark SQL的数据模型:DataFrame
本文介绍了在Spark SQL中创建DataFrame的三种方法。首先,通过定义case class来创建表结构,然后将CSV文件读入RDD并关联Schema生成DataFrame。其次,使用StructType定义表结构,同样将CSV文件读入RDD并转换为Row对象后创建DataFrame。最后,直接加载带有格式的数据文件(如JSON),通过读取文件内容直接创建DataFrame。每种方法都包含详细的代码示例和解释。
358 0
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
349 0
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
266 0
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
311 0