博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive 表的复制 & 新增字段
阅读量:6614 次
发布时间:2019-06-24

本文共 1631 字,大约阅读时间需要 5 分钟。

hot3.png

非分区表的复制

想要复制一张非分区表,可以使用create tale as去解决。

假如我们有一张temp表,为普通的内部表.复制可以采用如下的语句:

create table temp1 as select * from temp;

这样就复制出一张和temp结构一致的表(temp1)。

分区表的复制

分区表如果采用这种create…as…的方法去复制,数据也可以复制成功,但是表的结构是错误的,他会变成一个非分区表。要想实现分区表的复制,有下面2种方法:

动态分区

我们可以建一张和temp拥有一样表结构的表,然后使用动态分区的方法把数据导入:

create table temp2 like temp;insert overwrite  table  temp2 partition(year,month)select id,name,date,substring(date,1,4),substring(date,6,2) from temp;

执行后可以得到和之前一样的分区表,但是这种方法并不是最快的方法 。

msck修复分区

我们可以先复制出一张表结构和temp一样的表,然后将temp表目录下的数据复制到temp2,然后使用分区表的msck指令去重新生成分区。

create table temp2 like temp;dfs -cp /user/hive/warehouse/test.db/temp/* /user/hive/warehouse/test.db/temp2/;msck repair table temp2;

使用这样的方法同样可以快速的复制分区表,而且这样操作的速度比使用动态分区要快,因为我们移动数据是使用hdfs的文件复制,而不是启动mapreduce作业。

 

原始表:

hive (default)> desc dev.test1;  col_name    data_typepath_id     string    session_id  string    gu_id       string    end_user_id string    ds          string

在上表中新增两个字段platform_id、tpa,类型均为int类型:

hive (pms)> alter table dev.test1 add columns(platform_id int, tpa int);  FAILED: cannot recognize input near 'dev' '.' 'test1' in alter table statement

这样执行(有时候)会有问题,数据库名默认不支持,换种写法即可。

hive (dev)> use dev;                                                                     hive (dev)> alter table test1 add columns(platform_id int, tpa int);

新增的字段将加到该表的最后,分区字段之前并且在以前的分区中这两个字段都为NULL

hive (default)> desc dev.test1;  col_name       data_typepath_id        string      session_id     string    gu_id          string    end_user_id    string    platform_id    int     -- 新增字段tpa            int     -- 新增字段ds             string

 

转载于:https://my.oschina.net/u/3204727/blog/1647815

你可能感兴趣的文章
SSISDB5:使用TSQL脚本执行Package
查看>>
【转】UIColor对颜色的自定义
查看>>
asp.net后台进程做定时任务
查看>>
Ural_1671. Anansi's Cobweb(并查集)
查看>>
给vs2012换肤
查看>>
java接口中多继承的问题
查看>>
索引笔记《二》确定需要建立索引的列
查看>>
libjpeg的问题
查看>>
Ubuntu+Apache+PHP+Mysql环境搭建(完整版)
查看>>
深度学习笔记之CNN(卷积神经网络)基础
查看>>
Hadoop 添加删除数据节点(datanode)
查看>>
ext的window如何隐藏水平滚动条
查看>>
71.8. Run level shell script to start Oracle 10g services on RedHat Enterprise Linux (RHAS 4)
查看>>
SAP QM Transfer of Inspection Stock
查看>>
全新视觉| 数治省市:SAP大数据构想一切可能
查看>>
ORACLE expdp备份与ORA-31693、ORA-02354、ORA-02149
查看>>
DBMS_STATS.GATHER_TABLE_STATS
查看>>
Java-单机版的书店管理系统(练习设计模块和思想_系列 五 )
查看>>
嵌入式 详解udev
查看>>
《C程序员:从校园到职场》出版预告(2):从“百花齐放”到“一枝独秀”
查看>>