hive数据仓库新增字段方法

目录
  • 新增字段
    • 1、方法1
    • cascade知识
    • 2、方法2 (适用于外部表)
    • 3、方法3(下下策)
  • 修改字段
  • 删除列

新增字段

1、方法1

alter table 表名 add columns (列名 string COMMENT '新添加的列') CASCADE;
alter table 表名 add columns (列名 string COMMENT '新添加的列');
hive表中指定位置增加一个字段
分两步,先添加字段到最后(add columns),然后再移动到指定位置(change)
alter table 表名 add columns (列名 string comment '当前时间'); -- 正确,添加在最后
alter table 表名 change 列名 string after 指定位置的列名; -- 正确,移动到指定位置,address字段的后面

添加之后字段由于hive底层是文件和系列化的设计,因此查数据会发现新增的列在所有已有列的后面

CASCADE会刷历史分区字段

cascade知识

  • cascade的中文翻译为“级联”,也就是不仅变更新分区的表结构(metadata),同时也变更旧分区的表结构。
  • 对于删除操作也是,级联删除表中的信息,当表A中的字段引用了表B中的字段时,一旦删除B中该字段的信息,表A的信息也自动删除。(当父表的信息删除,子表的信息也自动删除)
  • 标准语法如下:

2、方法2 (适用于外部表)

当分区过多的情况下,直接使用alter就行增加字段会报错

第一步:删除分区 ,当分区过多可以写个for循环

alter table table_name drop if exists partition(par_col=col_name)

第二步:使用alter操作就行添加字段,这时候就不会因为分区过多报错

第三步:进行修复分区

msck repair table 表名;

3、方法3(下下策)

创建新表修改表名,进行存储原表数据

将原表进行drop,再对新表进行改名操作

ALTER TABLE old_name RENAME TO new_name;

修改字段

alter table table_name change column 已有列 修改名称 类型 comment '';

删除列

Hive不能直接删除列,不然底层系列化就乱了,我们可以通过replace语句来替换整张表的字段,达到同样的效果

alter table table_name replace columns(column_1 string);

语句中只写想要保留的字段就可以

以上就是hive中新增字段方法的详细内容,更多关于hive新增字段的资料请关注我们其它相关文章!

(0)

相关推荐

  • Hive导入csv文件示例

    目录 正文 首先创建表 导入数据及查询 其他注意事项 总结 正文 现有文件为csv格式,需要导入hive中,设csv内容如下 1001,zs,23 1002,lis,24 首先创建表 create table if not exists csv2( uid int, uname string, age int ) row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde' stored as textfile ; 导入数据及查询 l

  • 一文了解Hive是什么

    目录 一.Hive介绍 Hive的优缺点 Hive架构 Hive用户接口 Hive元数据的三种存储模式 Hive数据存储 架构原理 Hive文件格式 Hive本质 Hive工作原理 Hive数据类型 一.Hive介绍 hive: 由 Facebook 开源用于解决海量结构化日志的数据统计工具. Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能. Hive的优缺点 优点: 类似于SQL语句,简单学习易上手 避免了去写 MapRedu

  • Hive HQL支持2种查询语句风格

    目录 背景 风格一 风格二 两种风格的区别 背景 在平时业务运营分析中经常会提取数据,也就是大家俗称的Sql Boy,表哥表姐,各大公司数据中台现在大部分用的都是基于Hadoop的分布式系统基础架构,用的比较多的有Hive数据仓库工具,数据分析师在数据查询时用的就是HQL,语法与Mysql有所不同,基本每天都会写大量的HQL语句,但你有试过哪些风格的写法呢?哪种风格的查询语句更容易理解呢?可能不同的人有不同的看法,下面展示具体的风格代码样式,看看你喜欢哪种 Hadoop是一个由Apache基金会

  • Hive日期格式转换方法总结

    目录 背景 时间戳 日期格式转换 背景 日期计算平时在业务取数时经常涉及到,但是数据库中经常存放着不同的日期格式,有的存放是时间戳.有的是字符串等,这时需要对其进行转换才能提取到准确的数据,这里介绍的均是hive里面的函数功能,以下内容均是业务的数据需求经常使用的部分 时间戳 unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒,一般为10位的整数 一个在线工具:http://tools.jb51.net/code/unixtime 时间戳 字符串日期如:'2

  • Hive常用日期格式转换语法

    目录 获取当前时间 日期格式转换 返回日期中的年,月,日,时,分,秒,当前的周数 计算日期差值 返回当月或当年的第一天 参考汇总 获取当前时间 获取当前时间戳 select unix_timestamp() 把时间戳转为正常的日期 select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss') select from_unixtime(unix_timestamp(),'yyyy-MM-dd') 业务中有时存放的是包含毫秒的整数,需要先转

  • hive数据仓库新增字段方法

    目录 新增字段 1.方法1 cascade知识 2.方法2 (适用于外部表) 3.方法3(下下策) 修改字段 删除列 新增字段 1.方法1 alter table 表名 add columns (列名 string COMMENT '新添加的列') CASCADE; alter table 表名 add columns (列名 string COMMENT '新添加的列'): hive表中指定位置增加一个字段 分两步,先添加字段到最后(add columns),然后再移动到指定位置(change

  • mysql创建存储过程实现往数据表中新增字段的方法分析

    本文实例讲述了mysql创建存储过程实现往数据表中新增字段的方法.分享给大家供大家参考,具体如下: 需求: 往某数据库的某个表中新增一个字段(若该字段已存在,则不做操作:若该字段不存在,则新增) 百度了n久,没有符合要求的例子,只有参考加自己琢磨,最终终于给弄出来了,以下是几个版本的更迭 第一版: DELIMITER $$ CREATE PROCEDURE insert_column() BEGIN IF NOT EXISTS(SELECT 1 FROM information_schema.c

  • ES6中Math对象新增的方法实例详解

    本文实例讲述了ES6中Math对象新增的方法.分享给大家供大家参考,具体如下: Math.trunc() Math.trunc方法用于去除一个数的小数部分,返回整数部分. 对于没有部署这个方法的环境,可以用下面的代码模拟. Math.trunc = Math.trunc || function(x) { return x < 0 ? Math.ceil(x) : Math.floor(x); }; Math.sign() Math.sign方法用来判断一个数到底是正数.负数.还是零. 对于没有部

  • 在Framework 4.0中:找出新增的方法与新增的类(二)

    问题描述:在Framework 4.0中:找出新增的方法与新增的类(一) 为什么动态加载程序集无法找出Framework 4.0 和Framwork2.0 新增的方法和类? 因为控制台程序默认就添加了Framework4.0的程序集,当你使用Object,Type,string这些类的时候就已经在使用已经加载的程序集了,而clr不会重复的去加载程序集??,这点记不清了.所以V2Assembly 和v4Assembly都是Framework4.0的Assembly. 验证: 复制代码 代码如下:

  • python 处理dataframe中的时间字段方法

    在机器学习过程中,通常会通过pandas读取csv文件,保持成dadaframe格式,然而有时候需要对dataframe中的时间字段进行数据建模,比如时间格式为datetime,那么像一般操作dataframe的方式来操作时间字段会报错的,所以在使用sklearn库进行fit和predict的时候,通常要把时间字段首先转换为timestamp格式,在fit和predict之后,如果需要matplotlib绘图的时候,再把timestamp格式转换为时间字符串,比如2017-02-01 14:25

  • Java 8新增的方法参数反射实例分析

    本文实例讲述了Java 8新增的方法参数反射.分享给大家供大家参考,具体如下: 一 点睛 Java 8在java.lang.reflect包下新增了一个Executable抽象基类,该对象代表可执行的类成员,该类派生了Constructor.Method两个子类. Executable基类提供了大量方法来获取修饰该方法或构造器的注解信息:还提供了isVarArgs()方法用于判断该方法或构造器是否包含数量可变的形参,以及通过getModifiers()方法来获取该方法或构造器的修饰符.除此之外,

  • shell中循环调用hive sql 脚本的方法

    脚本tt.sh的内容如下: #!/bin/bash params=$1 for param in $params do echo $param done 运行方式为:sh tt.sh "1 2 3 4 5" 输出为: 1 2 3 4 5 所以参考上面的命令,可以把hql的脚本写为如下方式,就可以循环执行sql: 功能:查找字符串 comments 中的param第一次出现的位置 ,返回的是位置数字 #!/bin/bash params=$1 for param in $params d

  • vue2.0 + ele的循环表单及验证字段方法

    关于vue2.0 + ele的表单循环以及对应字段的验证!!!!! html代码 <el-form ref="ruleForm" :inline="true" :model="form" label-width="140px" :rules="rules" v-loading.fullscreen.lock="fullScreenLoading" element-loading-t

  • python集合的新增元素方法整理

    我们可以把全体人数当作一个集合,想要往其中加入新人有不同的增加方式.可以一周增加一次,也可以集中到月底一起加入集体.我们今天所要讲的在python集合中,添加元素的两种方法就可以这样理解.一个是整体加入,另一个是拆分加入,下面我们一起看看具体的使用吧. 集合的添加有两种方式,分别是add和update.但是它们在添加元素时是由区别的: add()方法 把要传入的元素作为一个整体添加到集合中,如: >>> s=set('one') >>> s {'e', 'o', 'n'

  • Clickhouse系列之整合Hive数据仓库示例详解

    目录 前言 正文 实战案例 ORC数据格式 Parquet数据格式 TextFile数据格式 总结 前言 什么是Hive? Apache Hive 数据仓库软件便于使用SQL读取.写入和管理驻留在分布式存储中的大型数据集.结构可以投射到已存储的数据上.提供了一个命令行工具和JDBC驱动程序,用于将用户连接到Hive. Hive引擎允许您对HDFS配置单元表执行SELECT查询.目前支持如下输入格式: 文本:仅支持简单标量列类型,二进制除外: ORC:支持除char以外的简单标量列类型:仅支持数组

随机推荐