大数据-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);
相关推荐
与遨游于天地9 分钟前
Spring 的10个核心能力,对框架开发的启示
java·后端·spring
寰天柚子43 分钟前
大模型时代的技术从业者:核心能力重构与实践路径
大数据·人工智能
shiwulou11 小时前
神经网络和深度学习 第三周:浅层神经网络(一)正向传播
后端
IT_陈寒1 小时前
Redis实战精要:5种高频使用场景与性能优化全解析|得物技术
前端·人工智能·后端
成长之路5141 小时前
【工具变量】上市公司西部陆海新通道DID数据(2010-2024年)
大数据
疯狂的程序猴1 小时前
iOS 证书如何创建,从能生成到能长期使用
后端
Coder_Boy_1 小时前
【人工智能应用技术】-基础实战-小程序应用(基于springAI+百度语音技术)智能语音控制-单片机交互代码
java·人工智能·后端·嵌入式硬件
IMPYLH1 小时前
Lua 的 OS(操作系统) 模块
开发语言·笔记·后端·游戏引擎·lua
南囝coding1 小时前
Node.js 原生功能狂飙,15 个热门 npm 包要失业了
前端·后端
Hello.Reader1 小时前
Flink SQL UPDATE 语句批模式行级更新、连接器能力要求与实战避坑
大数据·sql·flink