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 方法,并传入一个正则表达式来匹配这…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...
React核心概念:State是什么?如何用useState管理组件自己的数据?
系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...