hive3新增資料_Hive表新增字段后,新字段无法写入值问题总结
问题描述
今天同事让我把订单表新增一个字段,我新增好字段后,重跑脚本,验证数据的时候发现新增加的那个字段的值都是NULL。脚本通过insert overwrite覆盖T+1的历史数据。
新增字段的sql是这样的
altertable app.app_tar_order_dt addcolumns(brand_name stringCOMMENT'品牌名称');
解决方案
(1)将新增字段的sql改成如下所示,然后执行insert overwrite,再查询发现新增字段有数据了。
altertable app.app_tar_order_dt addcolumns(brand_name stringCOMMENT'品牌名称') cascade;
(2)通过对分区添加字段的方式,将新增字段的sql改成这样如下所示:
altertable app.app_tar_order_dt partition(dt='2020-09-10') add columns(brand_name stringCOMMENT'品牌名称');
(3)可以先将分区删除,然后重新insert overwrite,这样新的字段也会有值。
altertable app.app_tar_order_dt droppartition(dt='2020-09-10');
官方文档描述如下
The CASCADE|RESTRICT clause is available in Hive 1.1.0. ALTER TABLE ADD|REPLACE COLUMNS with CASCADE command changes the columns of a table's metadata, and cascades the same change to all the partition metadata. RESTRICT is the default, limiting column changes only to table metadata.
简单解释下,在Hive 1.1.0版本中可以使用CASCADE和RESTRICT语法,默认情况下是RESTRICT语法,RESTRICT语法只能更新表的元数据;而使用CASCADE语法的命令能同时更新表和分区元数据。
注意:默认的RESTRICT语法对新分区没有影响,新增字段之后,如果是生成新的分区,新增字段会有值,Hive会自动维护新分区中的元数据。
hive3新增資料_Hive表新增字段后,新字段无法写入值问题总结相关推荐
- hive 修改表名_hive表新增字段或者修改字段
1. hive表操作 1. 修改表字段的数据类型或者修改表字段名字 #如果表是外部表,需要先修改为内部表 alter table 数据库名.表名set tblproperties('EXTERNAL' ...
- ASP.NET MVC 5 - 给电影表和模型添加新字段
在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entit ...
- 如何在oracle同一个用户下所有的表批量加上同一个新字段
在项目工作中,目前遇到一个情况要给一个用户下大量表添加同一个新字段,对于新人来说比较头疼,如果进行复制粘贴,面对大量表的时候会有很大的工作量. 因此可以采用for 游标的形势来进行语句的批量执行. 首 ...
- WebApp匯入資料之From Excel
1.情景 點擊"瀏覽"按鈕,尋找要上傳的Excel.按下上傳按鈕,資料寫入資料庫(database)並且顯示在畫面上. 然後,按下"保存"按鈕,Datagrid ...
- Mysql修改表中字段名称、字段类型
修改字段名称: ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型; 修改字段类型: ALTER TABLE 表名 MODIFY COLUMN 字段名 新数据类型 新类型长度 ...
- sql数据表改为自动递增显示与其他表关联_MySQL萌新第一季 第四话-数据表的基本操作...
本话旨在完成以下内容: 在数据库中,数据表是数据库中最重要和基本的操作对象,是数据存储的基本单位.换句话说我们操作数据库其实重要的就是操作数据表.本章将详细介绍数据表的基本操作,主要内容包括:创建数据 ...
- oracle发现表被锁后又没了,Oracle的表被锁后的恢复
运行下列SQL,找出数据库的serial#,执行结果如下图所示 SELECT T2.USERNAME, T2.SID, T2.SERIAL#, T2.LOGON_TIME FROM V$LOCKE ...
- oracle字段重复新增错误,Oracle 判断表或字段是否存在新增/修改表结构可重复执行sql...
DECLARE num NUMBER; BEGIN -- 新增学生表 student SELECT COUNT (1) INTO num FROM cols WHERE table_name = UP ...
- SQL SERVER 新增表、新增字段、修改字段 判断表是否存在
// 新增之前判断表是否存在IF NOT EXISTS (SELECT NAME FROM SYSOBJECTS WHERE ID = OBJECT_ID('tb_MessageHistory'))B ...
最新文章
- 上传图片并生成缩略图
- EasyUI中ToolTip提示框的简单使用
- HP MSA2000-硬盘leftover-trust enable处理
- 自建ELK迁移阿里云日志服务
- 机器学习-LR推导及与SVM的区别
- 删库跑路事件发生,SaaS云服务如何守护数据安全
- Excel复制粘贴——跳过空单元格案例
- [转载]上善若水,厚德载物
- 一个文科妹子的前端悲欢编程之路
- win10不让桌面上显示宽带连接服务器,Win10宽带连接不见了
- 京东Q3财报净亏损28亿元,连续亏损,徐雷会下课吗?
- 健身房菜鸟入门小常识
- Flutter Package 开发、发布、使用
- linux 路由器 漏洞,多个Linksys EA系列路由器信息泄露漏洞(CVE-2014-8244)
- android设置页面转场特效
- android如何获取网络的状态码,Android RxJava+Retrofit网络异常、状态码统一处理
- word2010添加论文引用
- DO280OpenShift访问控制--管理项目和账户
- 车载网络测试 - UDS诊断篇 - 诊断RID/IOID($2F/$31)
- Java 并发编程内部分享PPT分享