大数据-13-Hive 启动Hive DDL DML 增删改查 操作Hive的HQL

点一下关注吧!!!非常感谢!!持续更新!!!

🚀 AI篇持续更新中!(长期更新)

目前2025年06月16日更新到: AI炼丹日志-29 - 字节跳动 DeerFlow 深度研究框架 私有部署 测试上手 架构研究,持续打造实用AI工具指南!📐🤖

💻 Java篇正式开启!(300篇)

目前2025年06月16日更新到: Java-44 深入浅出 Nginx - 底层进程机制 Master Worker 机制原理 常用指令 MyBatis 已完结,Spring 已完结,深入浅出助你打牢基础!

📊 大数据板块已完成多项干货更新(300篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈! 目前2025年06月13日更新到: 大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT案例 详解

章节内容

上一节我们完成了:

  • Hive简介
  • 安装配置
  • 下载、解压等等操作
  • 修改配置
  • MariaDB 安装
  • 启动配置
  • 建立用户 远程访问 刷新权限

背景介绍

这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。 之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。

  • 2C4G 编号 h121
  • 2C4G 编号 h122
  • 2C2G 编号 h123

启动Hive

上一节我们配置好了环境,在 h121 节点上。 此时,我们在命令行中执行:

shell 复制代码
hive

可以看到如下的执行效果

数据定义语言(DDL)

创建数据库

sql 复制代码
CREATE DATABASE IF NOT EXISTS mydb;
  • 可加 LOCATION 指定 HDFS 路径。
  • 默认存放在 /user/hive/warehouse/mydb.db。

删除数据库

sql 复制代码
DROP DATABASE mydb [CASCADE];
  • CASCADE 表示删除数据库及其中所有表。

创建表

内部表(Managed Table)

sql 复制代码
CREATE TABLE IF NOT EXISTS emp (
  id INT,
  name STRING,
  salary FLOAT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

外部表(External Table)

sql 复制代码
CREATE EXTERNAL TABLE IF NOT EXISTS emp_ext (
  id INT,
  name STRING,
  salary FLOAT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/user/hadoop/empdata';
  • 外部表不会随 DROP TABLE 删除数据。

删除表

sql 复制代码
DROP TABLE IF EXISTS emp;

数据操作语言(DML)

加载数据

sql 复制代码
LOAD DATA LOCAL INPATH '/home/data/emp.csv' INTO TABLE emp;
-- LOCAL 表示从本地上传;省略则是从 HDFS

插入数据

sql 复制代码
INSERT INTO TABLE emp VALUES (1, 'Tom', 5000.0);

多表插入

sql 复制代码
FROM employees
INSERT INTO TABLE high_salary SELECT * WHERE salary > 8000
INSERT INTO TABLE low_salary SELECT * WHERE salary <= 8000;

查询结果插入新表

sql 复制代码
CREATE TABLE emp_copy AS SELECT * FROM emp;

数据查询语言(SELECT)

基本查询

sql 复制代码
SELECT id, name FROM emp WHERE salary > 5000;

排序与限制

sql 复制代码
SELECT * FROM emp ORDER BY salary DESC LIMIT 10;

分组与聚合

sql 复制代码
SELECT dept, COUNT(*) AS cnt, AVG(salary) AS avg_sal
FROM emp
GROUP BY dept
HAVING COUNT(*) > 5;

联合与去重

sql 复制代码
SELECT name FROM emp1
UNION ALL
SELECT name FROM emp2;
sql 复制代码
SELECT DISTINCT dept FROM emp;

连接(Join)

内连接

sql 复制代码
SELECT a.id, a.name, b.dept_name
FROM emp a
JOIN dept b
ON a.dept_id = b.id;

左外连接

sql 复制代码
SELECT a.id, a.name, b.dept_name
FROM emp a
LEFT JOIN dept b ON a.dept_id = b.id;

右外连接 / 全外连接

sql 复制代码
RIGHT JOIN / FULL OUTER JOIN

测试Hive

shell 复制代码
show functions;

执行结果如下图:

修改配置

shell 复制代码
vim hive-site.xml

增加如下内容:

xml 复制代码
<!-- 数据默认的存储位置(HDFS) -->
<property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
        <description>location of default database for the warehouse</description>
</property>
<!-- 在命令行中,显示当前操作的数据库 -->
<property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
        <description>Whether to include the current database in the Hive prompt.</description>
</property>
<!-- 在命令行中,显示数据的表头 -->
<property>
        <name>hive.cli.print.header</name>
        <value>true</value>
</property>
<!-- 操作小规模数据时,使用本地模式,提高效率 -->
<property>
        <name>hive.exec.mode.local.auto</name>
        <value>true</value>
        <description>Let Hive determine whether to run in local mode automatically</description>
</property>

修改的结果如下图:

命令测试

shell 复制代码
hive: set;

可以在 Hive 控制台中,执行操作系统的指令:

shell 复制代码
!ls;
!clear;

可以在 Hive 控制台中,执行 DFS 的指令:

shell 复制代码
dfs -ls /;

一些语句

编写一些语句,对 Hive 进行其他简单的测试:

shell 复制代码
select array(1,2,3);
select arr[0] from (select array(1,2,3) arr) tmp;
select map('a',1,'b',2,'c',3);
select mymap["a"] from (select map('a', 1, 'b', 2, 'c',3) as mymap) tmp;
select struct('username1', 7, 1288.68);
相关推荐
郑道2 小时前
Docker 在 macOS 下的安装与 Gitea 部署经验总结
后端
3Katrina2 小时前
妈妈再也不用担心我的课设了---Vibe Coding帮你实现期末课设!
前端·后端·设计
汪子熙2 小时前
HSQLDB 数据库锁获取失败深度解析
数据库·后端
高松燈2 小时前
若伊项目学习 后端分页源码分析
后端·架构
没逻辑3 小时前
主流消息队列模型与选型对比(RabbitMQ / Kafka / RocketMQ)
后端·消息队列
倚栏听风雨3 小时前
SwingUtilities.invokeLater 详解
后端
Java中文社群3 小时前
AI实战:一键生成数字人视频!
java·人工智能·后端
王中阳Go4 小时前
从超市收银到航空调度:贪心算法如何破解生活中的最优决策谜题?
java·后端·算法
shepherd1114 小时前
谈谈TransmittableThreadLocal实现原理和在日志收集记录系统上下文实战应用
java·后端·开源
关山月4 小时前
使用 Ollama 和 Next.js 构建 AI 助手
后端