Hive数仓操作(六)
一、 Hive 分区表
Hive 的分区表通过在 HDFS 中以不同的目录存储不同的分区数据,来提高查询性能并减少数据扫描量。分区表可以根据特定的列(如 性别 列的男/女)将数据划分为多个部分,使得查询时只需要扫描相关的分区,而不是整个表,下文讲解一下静态分区表。
1. 创建分区表
创建分区表的语法如下:
CREATE TABLE stu_info (id INT,name STRING,age INT
)
PARTITIONED BY (class STRING) -- 分区列不能提前存在
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
2. 查看分区信息
要查看表的分区信息,可以使用以下命令:
DESC stu_info ; -- 查看表结构,包括分区信息
SHOW PARTITIONS stu_info ; -- 查看所有分区
3. 分区表的创建
分区表有两种使用情况,一种是创建分区表并加载数据LOAD DATA,另一种是将已有表转化为分区表并插入数据INSERT INTO。
示例一:创建分区表并加载数据
1. 创建分区表
我们首先创建一个分区表 stu_info,用于存储学生信息,并根据 class 列进行分区。
CREATE TABLE stu_info (id INT,name STRING,age INT
)
PARTITIONED BY (class STRING) -- 分区列
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',' -- 字段分隔符
STORED AS TEXTFILE; -- 存储格式
2. 准备数据文件
假设我们有一个数据文件 class_one.txt,内容如下:
1,张三,20
2,李四,22
3,王五,21
3. 加载数据到分区表
将数据文件加载到 stu_info 表中,指定 class 为 'one'。
LOAD DATA LOCAL INPATH '/opt/datas/class_one.txt'
INTO TABLE stu_info PARTITION (class='one');
示例二:将已有表转化为分区表
1. 创建已有表
假设我们已经有一个表 stu_info2,其结构如下:
CREATE TABLE stu_info2 (id INT,name STRING,age INT,sex STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',' -- 字段分隔符
STORED AS TEXTFILE; -- 存储格式
2. 创建新的分区表
接下来,我们将 stu_info2 表转化为分区表 stu_info2_p。首先创建新的分区表:
CREATE TABLE stu_info2_p (id INT,name STRING,age INT
)
PARTITIONED BY (sex STRING) -- 根据 sex 列分区
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',' -- 字段分隔符
STORED AS TEXTFILE; -- 存储格式
3. 插入数据到分区表
我们使用 INSERT 语句将 stu_info2 表的数据插入到 stu_info2_p 表中,并按 sex 列进行分区。
INSERT INTO TABLE stu_info2_p PARTITION (sex='male')
SELECT id, name, age FROM stu_info2 WHERE sex='男';
二、 Hive 分区操作
1. 增加单个分区
可以使用 ALTER TABLE ... ADD PARTITION 语句来添加一个新的分区。
ALTER TABLE stu_info ADD PARTITION (class='three');
2. 同时创建多个分区
可以在同一条语句中添加多个分区,但需要使用不同的子句。
ALTER TABLE stu_info ADD PARTITION (class='four') PARTITION (class='five');
3. 删除分区
对于内表,使用 ALTER TABLE ... DROP PARTITION 语句可以删除指定的分区及其数据。
ALTER TABLE stu_info DROP PARTITION (class='five');
注意: 删除分区时,该分区对应的目录及数据会被删除。
4. 同时删除多个分区
可以在同一条语句中同时删除多个分区。
ALTER TABLE stu_info DROP PARTITION (class='four'), PARTITION (class='five');
三、 Hive脚本化运行
实际工作中,使用交互式 shell 进行输入可能效率较低,因此可以使用脚本化方式来执行 Hive 查询。
1. 使用命令行执行简单查询
可以在本地Linux创建一个 Shell 脚本(例如 h1.sh),并在其中写入 Hive 查询命令。
#!/bin/bash
hive -e "SELECT * FROM bigdata.dept" > dept2.txt
- 说明:
hive -e允许你在命令行中直接执行 Hive SQL 查询。- 查询结果会被重定向到
dept2.txt文件中。
2. 执行复杂查询
如果需要执行复杂的 Hive 查询,可以将 SQL 语句写入后缀为 .hql 的文件,然后使用 hive -f 命令执行。
创建 HQL 文件
创建文件 h1.hql,写入以下内容:
SELECT * FROM bigdata.dept;
执行 HQL 文件
然后在Linux命令行中执行以下命令:
hive -f h1.hql > dept2.txt
- 说明:
hive -f h1.hql会读取h1.hql文件中的所有 SQL 语句并执行。- 查询结果同样会被重定向到
dept2.txt文件中。
感谢您访问本博文,另外,在今天这个举国欢庆的日子里,愿大家享受美好的时光,放下工作的繁忙,陪伴家人和朋友,共度温馨的国庆假期。愿祖国繁荣昌盛,国泰民安!祝大家国庆快乐,幸福安康!
相关文章:
Hive数仓操作(六)
一、 Hive 分区表 Hive 的分区表通过在 HDFS 中以不同的目录存储不同的分区数据,来提高查询性能并减少数据扫描量。分区表可以根据特定的列(如 性别 列的男/女)将数据划分为多个部分,使得查询时只需要扫描相关的分区,…...
centos7安装配置python3环境
1、wget https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz 2、安装python依赖环境 切换到root用户,然后执行下面命令: 3、安装gcc,用于后续安装Python时编译源码: yum install gcc -y 4、安装Python3相关依赖&#…...
用 LoRA 微调 Stable Diffusion:拆开炼丹炉,动手实现你的第一次 AI 绘画
总得拆开炼丹炉看看是什么样的。这篇文章将带你从代码层面一步步实现 AI 文本生成图像(Text-to-Image)中的 LoRA 微调过程,你将: 了解 Trigger Words(触发词)到底是什么,以及它们如何影响生成结…...
手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告)
手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告) 前言 在去年的差不多这个时候,我们做了一遍外置配件的选型,筛选过滤了一批USB蓝牙配件和type-c转usb的模块。详情可参考《外置配件的电商价格和下载链接的选型.docx》一文:蓝牙电话…...
Linux基于CentOS学习【进程状态】【进程优先级】【调度与切换】【进程挂起】【进程饥饿】
目录 进程状态 状态决定了什么 进程等待方式——队列 进程状态的表现 挂起状态 基于阻塞的挂起——阻塞挂起 swap分区 进程状态表示 Z僵尸状态 进程的优先级 什么是进程的优先级 为什么会有进程的优先级 进程饥饿 Linux的调度与切换 切换 调度 queue [ 140 ]&am…...
Golang | Leetcode Golang题解之第456题132模式
题目: 题解: func find132pattern(nums []int) bool {candidateI, candidateJ : []int{-nums[0]}, []int{-nums[0]}for _, v : range nums[1:] {idxI : sort.SearchInts(candidateI, 1-v)idxJ : sort.SearchInts(candidateJ, -v)if idxI < idxJ {ret…...
回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序
回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序 文章目录 一、基本原理一、基本原理二、HHO-LSSVM的流程三、优缺点四、应用场景 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 HHO-LSSVM回归预测结…...
【Android 源码分析】Activity生命周期之onStop-1
忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。 – 服装…...
【Unity】本地化实现
个人向笔记。 1 前言 记录一下自己的本地化实现思路,暂时只讲本文的本地化实现。 2 文本本地化方案-个人 本地化实现是基于Luban的。自己使用Luban实现了一个“配置表模块”,又实现了一个“全局配置模块”,之后再基于这两个模块实现了“文本…...
Django一分钟:在Django中怎么存储树形结构的数据,DRF校验递归嵌套模型的替代方案
引言 在开发过程中我们可能需要这样的树形结构: [{"data": {"name": "牛奶"},"children": [{"data": {"name": "蒙牛"}, },{"data": {"name": "伊利"}, }]},{"da…...
【Docker从入门到进阶】06.常见问题与解决方案 07.总结与资源
6. 常见问题与解决方案 在使用Docker进行开发和部署过程中,可能会遇到各种问题。以下是一些常见问题及其解决方案: 容器启动失败和调试 在使用 Docker 时,容器启动失败或立即退出可能会导致一定的困扰,以下是进一步深入解决该问…...
快速排序的非递归实现:借助栈实现、借助队列实现
目录 用栈实现快速排序 1.用栈实现非递归快速排序的思路步骤 1.1.思路步骤 2.用栈实现非递归快速排序的代码 3.用栈实现非递归快速排序的整个工程 3.1.QuickSortNonR.h 3.2.QuickSortNonR.c 3.3.Stack.h 3.4.Stack.c 用队列实现非递归快速排序 1.用队列实现非递归快…...
Finops成本优化企业实践-可视化篇
引言:上一章讨论了finops的一些方法论,笔者在拿到finops官方认证finops-engineer certificate之后,将方法论运用到所在项目组中,并于今年完成了40%的费用节省。在此将这些实践方法总结沉淀,与大家分享。实践包括三篇&a…...
Spring Boot中线程池使用
说明:在一些场景,如导入数据,批量插入数据库,使用常规方法,需要等待较长时间,而使用线程池可以提高效率。本文介绍如何在Spring Boot中使用线程池来批量插入数据。 搭建环境 首先,创建一个Spr…...
Python机器学习:自然语言处理、计算机视觉与强化学习
📘 Python机器学习:自然语言处理、计算机视觉与强化学习 目录 ✨ 自然语言处理(NLP) 文本预处理:分词、去停用词词向量与文本分类:使用Word2Vec与BERT 🌆 计算机视觉基础 图像预处理与增强目标…...
Vue2 + ElementUI + axios + VueRouter入门
之前没有pc端开发基础,工作需要使用若依框架进行了一年的前端开发.最近看到一个视频框架一步步集成,感觉颇受启发,在此记录一下学习心得。视频链接:vue2element ui 快速入门 环境搭建和依赖安装 安装nodejs安装Vue Cli使用vue create proje…...
GO网络编程(四):海量用户通信系统2:登录功能核心【重难点】
目录 一、C/S详细通信流程图二、消息类型定义与json标签1. 消息类型定义2. JSON标签3.结构体示例及其 JSON 表示:4.完整代码与使用说明 三、客户端发送消息1. 连接到服务器2. 准备发送消息3. 创建 LoginMes 并序列化4. 将序列化后的数据嵌入消息结构5. 序列化整个 M…...
某项目实战分析代码二
某项目实战分析代码二 此次分析的是protobuf的使用操作流程具体实现 3. 业务数据分析3.1 客户端3.2 服务器端简单案例 此次分析的是protobuf的使用 Protocol Buffer( 简称 Protobuf) 是Google公司内部的混合语言数据标准,它是一种轻便高效的结构化数据存储格式&…...
全面指南:探索并实施解决Windows系统中“mfc140u.dll丢失”的解决方法
当你的电脑出现mfc140u.dll丢失的问题是什么情况呢?mfc140u.dll文件依赖了什么?mfc140u.dll丢失会导致电脑出现什么情况?今天这篇文章就和大家聊聊mfc140u.dll丢失的解决办法。希望能够有效的帮助你解决这问题。 哪些程序依赖mfc140u.dll文件…...
QT学习笔记1(QT和QT creator介绍)
QT学习笔记1(QT和QT creator介绍) Qt 是一个跨平台的应用开发框架,主要用于图形用户界面(GUI)应用的开发,但也支持非GUI程序的开发。Qt 支持多种平台,如Windows、macOS、Linux、iOS和Android&a…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
