关键字:Hive 复制表

Hive中有时候会遇到复制表的需求,复制表指的是复制表结构和数据。

如果是针对非分区表,那很简单,可以使用CREATE TABLE new_table AS SELECT * FROM old_table;

那么如果是分区表呢?

首先想到的办法可能是:

先创建一张和old_table结构相同的new_table,包括分区;可以使用CREATE TABLE new_table LIKE old_table;

接下来使用动态分区,把old_table的数据INSERT到new_table中。

这个方法当然可以,但可能不是最快的。

其实可以这样做:

1. CREATE TABLE new_table LIKE old_table;

2. 使用hadoop fs -cp 命令,把old_table对应的HDFS目录的文件夹全部拷贝到new_table对应的HDFS目录下;

3. 使用MSCK REPAIR TABLE new_table;修复新表的分区元数据;

看例子:

有一张分区表t1,只有两个分区,每个分区中都有一条数据,如下:

hive> show partitions t1;

OK

pt=2015-09-11

pt=2015-09-12

Time taken: 0.11 seconds, Fetched: 2 row(s)

hive> desc t1;

OK

id string

pt string

# Partition Information

# col_name data_type comment

pt string

Time taken: 0.123 seconds, Fetched: 7 row(s)

hive> select * from t1;

OK

X 2015-09-11

Y 2015-09-12

Time taken: 0.095 seconds, Fetched: 2 row(s)

hive>

创建一张相同表结构的新表t2;

hive> create table t2 like t1;

OK

Time taken: 0.162 seconds

hive> desc t2;

OK

id string

pt string

# Partition Information

# col_name data_type comment

pt string

Time taken: 0.139 seconds, Fetched: 7 row(s)

hive> show partitions t2;

OK

Time taken: 0.082 seconds

使用hadoop fs -cp命令把t1对应HDFS目录的所有文件夹复制到t2对应的HDFS目录下:

[liuxiaowen@dev ~]$ hadoop fs -cp /hivedata/warehouse/liuxiaowen.db/t1/* /hivedata/warehouse/liuxiaowen.db/t2/

[liuxiaowen@dev ~]$ hadoop fs -ls /hivedata/warehouse/liuxiaowen.db/t2/

Found 2 items

drwxr-xr-x - liuxiaowen liuxiaowen 0 2015-09-11 17:17 /hivedata/warehouse/liuxiaowen.db/t2/pt=2015-09-11

drwxr-xr-x - liuxiaowen liuxiaowen 0 2015-09-11 17:17 /hivedata/warehouse/liuxiaowen.db/t2/pt=2015-09-12

在Hive用使用MSCK REPAIR TABLE t2;修复新表t2的分区元数据;

hive> show partitions t2;

OK

Time taken: 0.082 seconds

hive> MSCK REPAIR TABLE t2;

OK

Partitions not in metastore: t2:pt=2015-09-11 t2:pt=2015-09-12

Repair: Added partition to metastore t2:pt=2015-09-11

Repair: Added partition to metastore t2:pt=2015-09-12

Time taken: 0.249 seconds, Fetched: 3 row(s)

hive> show partitions t2;

OK

pt=2015-09-11

pt=2015-09-12

Time taken: 0.068 seconds, Fetched: 2 row(s)

hive> select * from t2;

OK

X 2015-09-11

Y 2015-09-12

Time taken: 0.123 seconds, Fetched: 2 row(s)

hive>

OK,新表t2已经复制好了,它和t1有着相同的表结构,分区结构,分区以及数据。

如果觉得本博客对您有帮助,请 赞助作者 。

hive 分区表select全部数据_Hive中如何快速的复制一张分区表(包括数据)相关推荐

  1. 若 PPP 协议使用同步传输技术,接收端收到的数据段中出现比特串“01011111001111101”,则真正的数据应该是()

    若 PPP 协议使用同步传输技术,接收端收到的数据段中出现比特 串"01011111001111101",则真正的数据应该是 (B ) A. 0101111100111111 B. ...

  2. 如何从海量数据中,快速采集到你想要的数据?

    大数据时代,什么最重要?毋庸置疑,是数据."数据是新时代的石油和黄金"业界专家如是说.有了数据,就有了业务飞速增长的基础引擎和原料,没有数据,你将失去一切. 用户通过手机.平板.电 ...

  3. hive 导出json格式 文件_hive中创建hive-json格式的表及查询

    在hive中对于json的数据格式,可以使用get_json_object或json_tuple先解析然后查询. 也可以直接在hive中创建json格式的表结构,这样就可以直接查询,实战如下(hive ...

  4. html间接收post传递的数据,HTML5中使用postMessage实现两个网页间传递数据

    估计很少人知道HTML5 APIS里有一个window.postMessage API.window.postMessage的功能是允许程序员跨域在两个窗口/frames间发送数据信息.基本上,它就像 ...

  5. 如何在php中插入数据并修改,php怎么同时向2张表里插入数据

    情况是这个样子的:我要做一个发消息的表,因为接受人可能是多个,所以又给接收人一单独的表,(这种方案好还是全部都放到一张表里好点呢?)2张表的字段如下: message_id是第一张表的主键, 如果收件 ...

  6. java输入多个数据_Java中怎么读入一行输入空格隔开的多个数据

    展开全部 import java.util.Scanner; public class ReadData{ public static void main(String[] args) { ReadD ...

  7. 数据API开发如何快速上手:先了解什么是数据API生命周期管理

    任何事务都有一个生命周期,数据API也不例外.上一段视频,我们解释了什么是数据API?.这段视频,我们来了解一下数据API的生命周期管理. 我们把每个数据API生命周期,划分为API规划.API开发. ...

  8. java实现两张表的数据同步,java实现mysql数据库从一张表插入数据到另一张表

    包 cn.gtmc.schedule.app; 导入 cn.gtmc.schedule.domain.Employee; import java.sql. * ; 导入 java.util.Array ...

  9. 数据表的级联删除(删除一张表里的数据,会把另一张表里的数据)

    // ON DELETE CASCADE     级联删除 //表user create table user( id int not null primary key, name varchar(2 ...

最新文章

  1. xubuntu18.04安装Google拼音输入法
  2. 使用Process.Start打开文件夹或网页
  3. notepad python配置_Notepad++怎么配置python?
  4. 全球顶级语音技术比赛中获双料冠军,这家中国公司靠什么?
  5. linux 天堂测试软件,[Ubuntu] HTTP Live Streaming 安装测试
  6. 高精度减法(C++实现)
  7. 服务器导出服务器时间转换浏览器端时区
  8. Qt Creator和VS2010中添加槽信号_差异与详解
  9. python 对输入的单词进行字典排序_Python-对字典进行排序
  10. Laravel测试驱动开发--反向单元测试
  11. 拔染印花几点注意事项
  12. 原生js--类、原型、构造函数
  13. python实操案例_python实战案例分享 - 讲师
  14. sql sever2005中实现“级联删除”
  15. c语言课程设计类层次图,C语言课程设计————写下流程图! 谢谢
  16. C语言cat函数的功能,R语言cat()函数
  17. 计算机专业普通的期刊,计算机类的普通期刊
  18. 愚人节就是要搞怪!微信公众号图文应该这样排版!
  19. swagger的基本使用
  20. 【matlab实现股票量化分析收盘价曲线作图-附源码】

热门文章

  1. nagios 的安装
  2. python数据可视化之美——基础
  3. 全球前10大数据库产品厂家
  4. 》技术应用:大数据产品体系
  5. vue配合element 实现在线预览pdf文档
  6. 平面漩涡Shader
  7. php网页怎么和PLC通讯,plc网络通讯方式和协议
  8. 我们的新书--《我是一只IT小小鸟》
  9. 【微信小程序——云音乐播放器】
  10. VSCODE: Merge-conflict设置