Hive中如何快速的复制一张分区表(包括数据)
2016-06-02 11:21
495 查看
如果我们表的分区创建非常多的话,对于我们装载数据是一件非常麻烦的事,Hive提供动态分区来解决这个问题。
可以基于查询参数推断出需要创建的分区名称,相比的分区都是静态的,这里就称之为动态的分区。
怎么来弄呢?
首先复制表结构:
create table applogs like applogsnew;
然后执行插入:
INSERT overwrite TABLE applogsnew PARTITION(create_time)
SELECT applogid ,msgtype ,clienttype ,create_time FROM applogs;
报错了,需要我们开启动态分区的支持
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nostrict;
set hive.exec.max.dynamic.partitions.pernode=1000;
再次执行
INSERT overwrite TABLE applogsnew PARTITION(create_time)
SELECT applogid ,msgtype ,clienttype ,create_time FROM applogs;
备注:
在创建分区的时候,最好不要创建过多的分区,如果分区过多的话,查询也是非常的慢的,就像在window下一个文件夹下面的文件过多会对我们的使用造成非常的不便的。
那么hive能支持多大的分区数呢,可以使用命令set hive.exec.max.dynamic.partitions获取。
可以基于查询参数推断出需要创建的分区名称,相比的分区都是静态的,这里就称之为动态的分区。
怎么来弄呢?
首先复制表结构:
create table applogs like applogsnew;
然后执行插入:
INSERT overwrite TABLE applogsnew PARTITION(create_time)
SELECT applogid ,msgtype ,clienttype ,create_time FROM applogs;
报错了,需要我们开启动态分区的支持
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nostrict;
set hive.exec.max.dynamic.partitions.pernode=1000;
再次执行
INSERT overwrite TABLE applogsnew PARTITION(create_time)
SELECT applogid ,msgtype ,clienttype ,create_time FROM applogs;
备注:
在创建分区的时候,最好不要创建过多的分区,如果分区过多的话,查询也是非常的慢的,就像在window下一个文件夹下面的文件过多会对我们的使用造成非常的不便的。
那么hive能支持多大的分区数呢,可以使用命令set hive.exec.max.dynamic.partitions获取。
相关文章推荐
- 录制IOS系统屏幕
- 提交项目到AppStore签名授权问题“You are not allowed to perform this operation”
- C++100w个数中找出最大的前K个数
- angular 使用 ui-router 设计网页
- 实时推送道路上少走弯路---GoEasy推送
- BigDecimal用法详解
- jQuery ajax应用总结
- 第十三节,基本数据类型,数字int字符串str
- html5(移动端)触摸点位置获取
- netCDF4-python的安装
- Java并发-任务执行和取消关闭
- MQ消息队列系列(5)ActiviteMQ Getting Started Guide(apache官网翻译)
- 10个实用的但偏执的Java编程技术
- android ble 开发笔记
- Android library projects cannot be lanched
- 互联网推广免费渠道整理
- App 应用托管平台
- Android安全开发之Provider组件安全
- Java去除依赖
- Spinner