Hive数仓操作(三)
一、Hive 数据库操作
1. 创建数据库
- 基本创建数据库命令:
CREATE DATABASE bigdata;
-
说明:
- 数据库会在 HDFS 中以目录的形式创建和保存,数据库名称会存储在 Hive 的元数据中。
- 如果不指定目录,数据库将在
/user/hive/warehouse
下创建。
-
手动指定目录(了解):
CREATE DATABASE IF NOT EXISTS db_test LOCATION '/test';
- 说明:
- 使用
IF NOT EXISTS
可以避免因数据库已存在而导致的错误。 LOCATION
用于指定数据库在 HDFS 中的存储位置。
- 使用
2. 查看所有数据库
- 查看数据库命令:
SHOW DATABASES;
- 说明:
- 该命令将列出所有已创建的数据库名称。
3. 切换数据库
- 切换到指定数据库:
USE bigdata;
- 说明:
- 切换当前会话的数据库,以后执行的查询和操作将在该数据库中进行。
4. 删除数据库
- 删除数据库命令:
DROP DATABASE database_name;
-
说明:
- 该命令将删除指定的数据库。如果数据库中存在表,默认情况下会报错。
-
强制删除数据库:
DROP DATABASE database_name CASCADE;
-
说明:
- 使用
CASCADE
关键字可以强制递归删除,允许删除包含表的数据库。
- 使用
-
安全删除,如果数据库存在:
DROP DATABASE IF EXISTS database_name CASCADE;
- 说明:
IF EXISTS
关键字用于避免因数据库不存在而导致的错误。
5. 显示数据库信息
- 显示数据库信息:
DESC DATABASE bigdata;
- 说明:
- 该命令将显示指定数据库的详细信息,包括数据库的名称、位置、创建时间等。
二、Hive 创建内部表
Hive 表的类型
在 Hive 中,有多种类型的表,主要包括:
-
内部表(Managed Table):
- 默认的表类型。创建时,Hive 会在默认的 warehouse 目录中创建一个以表名命名的目录,并将数据存储在该目录下。
- 当删除内部表时,表结构和数据都将被删除。
-
外部表(External Table):
- 创建时,Hive 不会管理数据的存储位置。数据可以存储在 HDFS 中的任何位置。
- 删除外部表时,只删除表结构,而不会删除数据。
-
分区表(Partitioned Table):
- 将表的数据根据某个列的值进行分区,从而提高查询效率。
- 每个分区对应一个子目录。
-
分桶表(Bucketed Table):
- 将数据分成多个桶(文件),并可以在查询时提高性能。
- 通常与分区表结合使用。
创建内部表的步骤
在 Hive 中创建一个表通常遵循以下步骤:
-
准备数据文件:
- 数据文件可以在 Linux 文件系统或 HDFS 中存在。
-
创建表:
- 表的结构需要与数据文件的格式相对应。
-
加载数据:
- 使用
LOAD DATA
命令将数据导入表中。
- 使用
创建表的语法结构
创建表的基本语法如下:
CREATE TABLE 表名 (列名1 类型,列名2 类型,...
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '分隔符';
三、Hive 内部表的其他操作
1. 向内部表中插入数据
可以使用 INSERT INTO
语句将数据插入内部表,不常单条插入,一般select插入。
INSERT INTO TABLE student VALUES (1, 'Alice', 20);
2. 查询内部表
查询内部表使用标准的 SELECT
语句:
SELECT * FROM student;
3. 删除内部表
使用 DROP TABLE
语句可以删除内部表。与外部表相同,删除内部表时,会删除该表的元数据和所有相关数据。
DROP TABLE IF EXISTS student;
4. 更新内部表
在 Hive 中,内部表不支持直接的 UPDATE
操作,但可以通过创建新表的方式来实现更新。
示例:
首先查询并过滤需要更新的数据,然后插入到新表中:
CREATE TABLE student_temp AS
SELECT * FROM student WHERE id != 1;-- 然后删除旧表
DROP TABLE student;-- 重命名新表为旧表名
ALTER TABLE student_temp RENAME TO student;
示例:创建一个学生表(hive的stu数据库)
stu
数据库创建:
CREATE DATABASE IF NOT EXISTS stu;
插入数据之前,需要切换到 stu
数据库:
USE stu;
创建一个学生表:
CREATE TABLE stu (id INT,name STRING,age INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
- 说明:
ROW FORMAT DELIMITED
指定了行的格式。FIELDS TERMINATED BY ','
指定了列之间的分隔符为逗号。
从 HDFS 导入数据
假设本地 Linux 文件系统有一个文件 /opt/datas/stu.txt
,可以使用 hadoop fs -put
命令将其上传到 HDFS。
hadoop fs -put /opt/datas/stu.txt /datas/
然后将数据从 HDFS 导入到表中:
LOAD DATA INPATH '/datas/stu.txt' INTO TABLE stu;
OVERWRITE:
- 语法:
LOAD DATA INPATH '/datas/stu.txt' OVERWRITE INTO TABLE stu;
- 如果表
stu
已经存在数据,执行该命令后,表中的所有现有数据将被删除,并用新的数据替换。 - 这意味着结果表只会包含新加载的
stu.txt
文件中的数据。
- 如果表
从本地Linux导入数据
将数据从本地文件系统导入到表中:
LOAD DATA LOCAL INPATH '/opt/datas/stu.txt' INTO TABLE stu;
查询表的数据
查询表中的数据:
SELECT * FROM stu;
注意
- 当你创建
stu
表并加载数据后,HDFS 的warehouse
目录下会生成一个名为stu
的子目录,存储了表的数据文件。 /user/hive/warehouse/stu.db/stu
该目录通常包含多个文件(如从hdfs目录/datas
移动而来的文件/datas/stu.txt
变成/user/hive/warehouse/stu.db/stu/stu.txt
),这些文件存储的是实际的数据。
相关文章:
Hive数仓操作(三)
一、Hive 数据库操作 1. 创建数据库 基本创建数据库命令: CREATE DATABASE bigdata;说明: 数据库会在 HDFS 中以目录的形式创建和保存,数据库名称会存储在 Hive 的元数据中。如果不指定目录,数据库将在 /user/hive/warehouse 下…...

TDSQL-C电商可视化,重塑电商决策新纪元
前言: 在数字化浪潮席卷全球的今天,电子商务行业以其独特的魅力和无限潜力,成为了推动全球经济增长的重要引擎。然而,随着业务规模的急剧扩张,海量数据的涌现给电商企业带来了前所未有的挑战与机遇。如何高效地处理、…...

翔云 OCR:发票识别与验真
在数字化时代,高效处理大量文档和数据成为企业和个人的迫切需求。翔云 OCR 作为一款强大的光学字符识别工具,在发票识别及验真方面表现出色,为我们带来了极大的便利。 一、翔云 OCR 简介 翔云 OCR 是一款基于先进的人工智能技术开发的文字识别…...
HTML ASCII:Web 开发中的字符编码基础
HTML ASCII:Web 开发中的字符编码基础 ASCII,全称为美国信息交换标准代码(American Standard Code for Information Interchange),是一种用于电子通信的字符编码标准。它最初于1963年提出,用于在不同的计算…...

Meta 首个多模态大模型一键启动!首个多针刺绣数据集上线,含超 30k 张图片
小扎在 Meta Connect 2024 主题演讲中宣布推出首个多模态大模型 Llama 3.2 vision!该模型有 11B 和 90B 两个版本,成为首批支持多模态任务的 Llama 系列模型,根据官方数据,这两个开原模型的性能已超越闭源模型。 小编已经迫不及待…...
阿里云ECS服务器仿真
1.首先使用qemu-img对RAW镜像进行转换,qemu-img convert -O vmdk 1.raw 2.vmdk 2.使用WinHex对镜像的root密码进行删除 3.由于这次阿里云ECS使用了CONFIG_SYSTEM_TRUSTED_KEYS验证,无法直接仿真,需使用live系统对内核进行修改。分为以下几步&…...

如何为树莓派安装操作系统,以及远程操控树莓派的两种方法,无线操控和插网线操控
文章目录 一、下载树莓派的系统二、将文件下载到SD卡中1.使用官方软件2.其他选择 三、远程连接电脑安装vnc-viewer1.无线操作(配置树莓派,开启VNC)电脑远程配置2.有线连接(需要一根网线) 总结 一、下载树莓派的系统 下…...

【最新华为OD机试E卷-支持在线评测】简单的自动曝光(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…...
每日一练:等差数列划分
413. 等差数列划分 - 力扣(LeetCode) 题目要求: 如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给…...

Kotlin真·全平台——Kotlin Compose Multiplatform Mobile(kotlin跨平台方案、KMP、KMM)
前言 随着kotlin代码跨平台方案的推出,kotlin跨平台一度引起不少波澜。但波澜终归没有掀起太大的风浪,作为一个敏捷型开发的公司,依然少不了Android和iOS的同步开发,实际成本和效益并没有太多变化。所以对于大多数公司来说依然风平…...

unity 默认渲染管线材质球的材质通道,材质球的材质通道
标准渲染管线——材质球的材质通道 文档,与内容无关,是介绍材质球的属性的。 https://docs.unity3d.com/2022.1/Documentation/Manual/StandardShaderMaterialParameters.html游戏资源中常见的贴图类型 https://zhuanlan.zhihu.com/p/260973533 十大贴图…...

PostgreSQL升级:使用pg_upgrade进行大版本(16.3)升级(17.0)
1.pg_upgrade工具介绍 pg_upgrade 会创建新的系统表,并以重用旧的数据文件的方式进行升级。 pg_upgrade 的参数选项如下: -b bindir,--old-bindirbindir:旧的 PostgreSQL 可执行文件目录; -B bindir,--new-…...
userdel命令:删除指定Linux用户
一、命令简介 userdel 命令用于删除 Linux 系统中的用户账号。当您不再需要某个用户账号时,可以使用 userdel 命令将其从系统中删除。 二、命令参数 userdel [选项] 用户名一些常用的选项包括: -r, --remove: 删除用户的家目录及邮件目录。…...
QT系统学习篇(1)
一、什么是Qt、Qt的优势 QT是一个跨平台的C图形用户界面库,目前包括Qt Creator、Qt Designer等等快速开发工具。支持所有Linux/Unix系统,还支持windows平台。Qt很容易扩展,并且允许真正的组件编程。(军工企业项目开发基本离不开Q…...
每日一刷——9.26——ACM训练题——Fibonacci Again
题目描述: There are another kind of Fibonacci numbers: F(0) 7, F(1) 11, F(n) F(n-1) F(n-2) (n>2). Input Input consists of a sequence of lines, each containing an integer n. (n < 1,000,000). Output Print the word "yes" if 3 d…...

代码随想录 | Day28 | 回溯算法:组合组合总和III
代码随想录 | Day28 | 回溯算法:组合&&组合总和III 关于这个章节,大家最好是对递归函数的理解要比较到位,听着b站视频课可能呢才舒服点,可以先去搜一搜关于递归函数的讲解,理解,再开始这个章节会比…...

【重学 MySQL】四十五、数据库的创建、修改与删除
【重学 MySQL】四十五、数据库的创建、修改与删除 一条数据存储的过程数据输入数据验证数据处理数据存储数据持久化反馈与日志注意事项 标识符命名规则基本规则长度限制保留字与特殊字符命名建议示例 MySQL 中的数据类型创建数据库创建数据库时指定字符集和排序规则 查看数据库…...

STM32驱动直流电机
stm32通过PWM控制直流电机的方向和速度。 小直流电机需要几百毫安的电流,单片机只能提供几毫安的电流。电机内线圈转动时切割磁感线以及电机内转子线圈的电感效应都会产生反电动势,损坏芯片。 电机驱动芯片能够作为STM32驱动电机的帮手。 SLEEP暂停工作…...

【C++】二叉搜索树+变身 = AVL树
🚀个人主页:小羊 🚀所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言一、AVL树二、AVL树的实现2.1 平衡因子2.2 旋转处理2.2.1 左单旋:插入新节点后单纯的右边高2.2.2 …...

Flutter String 按 ,。分割
在 Flutter 中,如果你想将一个字符串按特定的字符(例如中文逗号 , 和英文句号 .)进行分割,可以使用 Dart 语言的字符串处理功能。具体来说,你可以使用 split 方法,并传入一个正则表达式来匹配这…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...