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 方法,并传入一个正则表达式来匹配这…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
