hive alter table add columns 是否使用 cascade 的方案
结论
alter table xxx add columns 时加上 cascade 时,会把所有的分区都加上此字段。如果不加则只有新的分区会加上此字段,旧的分区没有此字段,即便数据文件里有对应的数据,也不能显示内容。
- 如果分区都是 insert overwrite 生成的,并且旧分区的数据不再重新生成,可以在 add columns 不用cascade,这样旧的分区对应的列显示 null。新的分区正常显示新增的列。
- 如果分区都是 insert overwrite 生成的,并且旧分区的数据需要重新生成。两种方案:1. 可以在 add columns 不用 cascade。然后每个分区先执行 drop partition,然后再执行 insert overwrite。2.可以在 add columns 使用 cascade,然后再执行 insert overwrite。如果方案2报错,则只能使用方案1.
- 如果文件是从外部生成,然后放到对应分区位置上,并且文件里已经有要加的字段数据。需要使用 cascade。如果使用 cascade 报错,那么看表是否是外部表。如果不是外部表,则先转成外部表。如果是外部表,则直接 drop partition 然后再 add partition location 增加分区。
- 如果文件是从外部生成,然后放到对应分区位置上,并且文件里没有要加的字段数据。不需要使用 cascade。旧的分区对应的列显示 null。新的分区正常显示新增的列。
注:
- 判断表是否是外部表,使用 ‘show create table xxx’, 如果生成的是 ‘CREATE TABLE’ 是内部表,如果是
CREATE EXTERNAL TABLE是外部表。 - 把表从外部表转成内部表
ALTER TABLE xxx SET TBLPROPERTIES('EXTERNAL'='FALSE'); - 把表从内部表转成外部表
ALTER TABLE <table> SET TBLPROPERTIES('EXTERNAL'='TRUE');
测试 cascade 的作用
准备文件
data.txt
key1,value1
key2,value2
测试 no cascade
create table t_no_cascade(c1 string) partitioned by (pt string) row format delimited
FIELDS TERMINATED BY ',' stored as textfile;
增加分区 pt=1
load data local inpath 'data.txt' overwrite into table t_no_cascade partition(pt=1);
检索结果,显示 c1 和 pt 字段。
select * from t_no_cascade where pt=1;
OK
t_no_cascade.c1 t_no_cascade.pt
key1 1
key2 1
- 增加字段
alter table t_no_cascade add columns(c2 string) ;
- 再次检索分区pt=1,因为分区没有定义 c2, 所以 c2 为 null。
select * from t_no_cascade where pt=1;
OK
t_no_cascade.c1 t_no_cascade.c2 t_no_cascade.pt
key1 NULL 1
key2 NULL 1
- 增加新分区 pt=2
新增的字段对新增的分区有效。
load data local inpath 'data.txt' overwrite into table t_no_cascade partition(pt=2);
- 检索分区
因为新分区是表
select * from t_no_cascade where pt=2;
OK
t_no_cascade.c1 t_no_cascade.c2 t_no_cascade.pt
key1 value1 2
key2 value2 2
- 重新复写老分区
重新复写老分区不能看到新的列数据。如果需要,可以先删除老分区,再使用 insert overwrite。
insert overwrite table t_no_cascade partition(pt=1) select c1,c2 from t_no_cascade where pt=2;
insert overwrite table xxx partition 还是使用之前的 partition id,所以此分区还是没有新的字段。
select * from t_no_cascade where pt=1;
OK
t_no_cascade.c1 t_no_cascade.c2 t_no_cascade.pt
key1 NULL 1
key2 NULL 1
- drop 老分区再使用 insert overwrite
drop 老分区再使用 insert overwrite,可以看到新的字段。
alter table t_no_cascade drop partition(pt=1);
insert overwrite table t_no_cascade partition(pt=1) select c1,c2 from t_no_cascade where pt=2;
这时的 partition(pt=1) 是新的分区id,这时可以看到新的数据。
select * from t_no_cascade where pt=1;
OK
t_no_cascade.c1 t_no_cascade.c2 t_no_cascade.pt
key1 value1 1
key2 value2 1
2. 测试 cascade
create table t_cascade(c1 string) partitioned by (pt string) row format delimited
FIELDS TERMINATED BY ',' stored as textfile;
增加分区 pt=1
load data local inpath 'data.txt' overwrite into table t_cascade partition(pt=1);
检索结果,显示 c1 和 pt 字段。
select * from t_cascade where pt=1;
OK
t_cascade.c1 t_cascade.pt
key1 1
key2 1
- 增加字段
使用 cascade 递归的给各分区增加上字段。
alter table t_cascade add columns(c2 string) cascade;
- 再次检索分区pt=1。
cascade 后,老的分区也加上了字段。
select * from t_cascade where pt=1;
OK
t_cascade.c1 t_cascade.c2 t_cascade.pt
key1 value1 1
key2 value2 1
相关文章:
hive alter table add columns 是否使用 cascade 的方案
结论 alter table xxx add columns 时加上 cascade 时,会把所有的分区都加上此字段。如果不加则只有新的分区会加上此字段,旧的分区没有此字段,即便数据文件里有对应的数据,也不能显示内容。 如果分区都是 insert overwrite 生成…...
手机怎么玩steam游戏?随时随地远程串流玩steam游戏教程
喜欢在steam上玩游戏的玩家有没有想过,其实这些游戏也能在手机上玩呢?不管是探索的开放世界游戏,还是紧张刺激的射击游戏,还是丰富剧情的视觉小说等等,这些游戏你都可以通过远程串流软件,来帮你实现在手机上…...
【使用antv g6实现拓扑图】
使用antv g6实现拓扑图 安装antv g6创建一个 div,并制定必须的属性 id定义初始化方法定义node节点数据将获取到的数据渲染进页面 安装antv g6 npm install antv/g6 --save import G6 from antv/g6;创建一个 div,并制定必须的属性 id 定义好展示id&…...
【数学 函数空间】拉普拉斯变换解微分方程步骤
拉普拉斯变换解微分方程 拉普拉斯变换解微分方程的一般步骤如下: 写出微分方程。对微分方程两边应用拉普拉斯正变换。求解变换后的代数方程,得到 Y ( s ) Y(s) Y(s)。如果需要,进行部分分式分解。对 Y ( s ) Y(s) Y(s)进行拉普拉斯逆变换&…...
vue3: toRef, reactive, toRefs, toRaw
vue3: toRef, reactive, toRefs, toRaw <template><div>{{ man }}</div><hr><!-- <div>{{ name }}--{{ age }}--{{ like }}</div> --><div><button click"change">修改</button></div&g…...
Unity读取Json
参考 Unity读取Json的几种方法_unity读取json文件-CSDN博客...
基于STM32的智能语音识别饮水机系统设计
功能描述 1、给饮水机设定称呼,喊出称呼,饮水机回答:我在 2、语音进行加热功能,说:请加热,加热片运行 3、饮水机水位检测,低于阈值播报“水量少,请换水” 4、检测饮水机水温…...
c++的几种构造函数
c的几种构造函数 构造函数拷贝构造函数转换构造函数移动构造函数 析构函数 构造函数 C中的构造函数可以分为5类:默认构造函数、普通构造函数、拷贝构造函数、转换构造函数、移动构造函数。 好像还有委托构造 默认构造和普通构造和java基本一样 详细 拷贝构造函…...
FRP 实现内网穿透
如何通过 FRP 实现内网穿透:群晖 NAS 的 Gitea 和 GitLab 访问配置指南 在自建服务的过程中,经常会遇到内网访问受限的问题。本文将介绍如何利用 FRP(Fast Reverse Proxy)来实现内网穿透,以便在外网访问群晖 NAS 上的…...
数据结构笔记(其八)--一般树的存储及其遍历
1.知识总览 一般的树会有多个孩子,所以存储结构也会与二叉树略有不同。 一般树的遍历。 2.双亲表示法 双亲表示法,也是父亲表示法,即每个节点中都存储了其父节点的地址信息。 特性:可以轻易地找到父节点,但寻找孩子节…...
在spring boot工程中使用Filter时,@WebFilter 注解不生效的问题分析和解决方案
1. 问题描述 首先编写一个Filter类并通过Component放入spring容器中,通过实现jakarta.servlet中提供的Filter接口完成过滤器的创建,代码如下。 import jakarta.servlet.*; import jakarta.servlet.annotation.WebFilter; import org.springframework.st…...
浅谈“通感一体”
文章目录 5G_Advanced的关键技术通感一体的介绍通感一体应用通感一体面临的挑战 5G_Advanced的关键技术 2024年6月18日16点30分,在上海举行的3GPP RAN第104次会议上,R18标准正式冻结,标志着5G技术的又一重要里程碑。值得注意的是,…...
【Linux】监控系统Zabbix的安装与配置
文章目录 一、前期准备1、安装LAMP2、配置SELinux与防火墙3、测试Apache4、配置数据库5、创建zabbix数据库及应用 二、server端安装配置1、软件包安装2、配置数据库3、zabbix访问测试4、配置web界面 三、Agent端安装配置1、安装zabbix-agent2、配置3、启动zabbix-agent4、配置防…...
Springboot定时任务
Component EnableScheduling public class SpringBootTestJob {Scheduled(cron "0/5 * * * * ?")public void testScheduled(){System.out.println("SpringBootTestJob test");} }这段代码使用了 Spring Boot 自带的定时任务机制。解释如下: …...
node.js知识点总结
1、Node.js Node. js是一个基于 Chrome v8引擎的服务器端 JavaScript运行环境;Node. js是一个事件驱动、非阻塞式I/O的模型,轻量而又高效;Node. js的包管理器npm是全球最大的开源库生态系统。 2、数据处理中的buffer: 具体…...
Kotlin中泛型的协变
interface Shapeclass Circle : Shapefun main() {val shapes1: List<Shape> listOf<Circle>()val shapes2: MutableList<Shape> mutableListOf<Circle>() }如上代码,第一行赋值语句是OK的,第二行赋值语句在编辑器上直接就报错…...
第三百二十五节 Java线程教程 - Java Fork/Join框架
Java线程教程 - Java Fork/Join框架 fork/join框架通过利用机器上的多个处理器或多个内核来解决问题。 该框架有助于解决涉及并行性的问题。 fork/join框架创建一个线程池来执行子任务。 当线程在子任务上等待完成时,框架使用该线程来执行其他线程的其他未决子任…...
网络游戏安全现状及相关应对方案
中国网络游戏历经十余年的飞速发展,取得了显著成就,但与此同时,也陷入了诸多安全问题的泥沼。 一、中国网络游戏发展中的安全困境 (一)灰色产业链滋生 外挂、私服、盗号、打金工作室以及网络信息诈骗等灰色产业链在…...
uniapp h5地址前端重定向跳转
简单说下功能,就是在地址输入http://localhost:8080/home 会自行跳转到http://localhost:8080/pages/home/index,如果有带参数的话也会携带上去。 ps:只能在h5中使用 首先需要用到query-string 安装query-string npm install query-string…...
uniapp隐藏自带的tabBar
uniapp隐藏自带的tabBar 场景: 微信小程序在使用自定义tabBar组件时, 隐藏uniapp自带的tabBar <template> <!-- index页面 --> </template> <script setup> import { onShow } from /utils/wxUtils onShow(() > {uni.hideTabBar() // 隐藏自带的tab…...
不同版本Python安装常见问题与解决方案
1. 如何在特定的版本下安装package (1) 在命令提示符中,打开相应版本python的安装目录; (2) 执行语句python.exe -m pip install XX (3) 更新库 2. 如何在Spyder中设定特定的python解释器 Spyder—Tools—Python Interpreter...
初创团队如何利用 Taotoken 的 Token Plan 有效控制 AI 开发成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用 Taotoken 的 Token Plan 有效控制 AI 开发成本 对于资源有限的初创团队而言,在产品原型开发或内部工…...
AI数字人驱动的矩阵内容生产:2026年技术架构与人效革命
一、背景:为什么2026年矩阵团队开始淘汰真人出镜?2024年之前,短视频矩阵的内容生产模式是这样的:环节传统方式瓶颈写脚本编剧手写1人1天最多写5条拍视频真人出镜拍摄1人1天最多拍3条剪辑剪辑师手动剪1人1天最多剪8条配音真人录音/…...
LabVIEW项目实战:用‘类+队列’模式管理仪器参数,告别全局变量混乱
LabVIEW工程实践:基于类与队列的仪器参数管理框架设计 在工业自动化测试系统中,仪器参数管理一直是困扰工程师的典型难题。当系统需要同时控制网口、串口、GPIB等多种接口的测试设备时,传统的全局变量方案会导致参数耦合、修改不同步等问题。…...
别再只盯着原理图了!FPGA/SoC硬件工程师必看的RGMII接口PCB布线实战指南(含时序约束与等长规则)
RGMII接口PCB设计实战:从时序规范到千兆以太网稳定通信 在FPGA和SoC硬件开发中,RGMII接口设计一直是工程师们又爱又恨的挑战。爱它的简洁高效——相比GMII接口减少了近一半的引脚数量;恨它的时序敏感——一个看似微小的PCB布线失误就可能导致…...
FanControl完全指南:5步打造Windows风扇智能控制系统
FanControl完全指南:5步打造Windows风扇智能控制系统 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/…...
嵌入式Linux无线AP搭建实战:hostapd与udhcpd配置详解
1. 项目概述:为什么要在嵌入式设备上折腾无线AP?最近在调试一个移动机器人项目,设备上跑的是裁剪过的嵌入式Linux系统。调试过程里最头疼的就是网线——设备满场跑,我得抱着笔记本在后面追,活像在玩现实版的“老鹰捉小…...
别只盯着TPS!用JMeter汇总报告做一次完整的性能瓶颈分析实战
别只盯着TPS!用JMeter汇总报告做一次完整的性能瓶颈分析实战 在性能测试领域,JMeter的汇总报告(Summary Report)是最常用的监听器之一,但很多测试工程师往往只关注其中的TPS(每秒事务数)指标&am…...
从单机到联网:手把手教你用NetCA为Oracle数据库配置‘电话线’(监听程序与本地网络服务)
从单机到联网:手把手教你用NetCA为Oracle数据库配置‘电话线’ 想象一下,你刚搬进一栋新公寓,已经熟悉了家里的水电开关(本地Oracle安装),但还没登记电话号码(监听程序)和录入邻居联…...
Arduino | 从串口收发到双向对话:实战指令解析与数据交换
1. 串口通讯:Arduino与世界的对话桥梁 第一次接触Arduino时,很多人都会从经典的Blink示例开始——让板载LED灯规律闪烁。但当你想要动态调整LED亮度时,就会发现需要一种与Arduino"对话"的方式。这就是串口通讯的用武之地。想象一下…...
