`

hive快速拷贝动态分区的两种方式

    博客分类:
  • hive
 
阅读更多

 

 

在hive仓库修改以前逻辑中,如果因为 一时的需要 增加了hive表的字段,后来在过些日子思考后感觉

这个业务不需要在增加这个字段, 在hive分区表中,

 

增加列语句, 需要增加 cascade,否则分区表在查询某天分区数据时会查不到

 

 

alter table ods_teach_online_coursewares ADD COLUMNS (ccdl_begtime string COMMENT '打点开始时间') CASCADE;

 

 

 

这里主要讨论的是,在分区表增加了列,后来又不需要这些列的处理方式:

 

1 这是我常用的方式,通过sql方式:

eg : 表1 需要将 列1,列2去掉,

那么,先创建好 去掉列1,2的这个表, 

然后hive命令行中如下:

 

 

 set hive.exec.dynamic.partition.mode=nonstrict;  必须设置

insert overwrite table ods_teach_online_coursewares_bak partition(day) 
select   在 select 具体列名时,必须要显示带上 day
province_id,
province_name,
city_id,
city_name,
county_id,
county_name,
school_id,
school_name,
grade,
class_id,
class_name,
subject_id,
subject_name,
book_id,
book_name,
unit_id,
unit_name,
ccl_coursewares_id,
coursewares_name,
is_collect,
pid,
courseware_creator,
creator_name,
creator_icon,
courseware_owner,
owner_name,
owner_icon,
ccl_id,
ccl_begtime,
ccl_endtime,
duration,
ccdl_type,
resource_count,
ccl_type,
day 
from ods_teach_online_coursewares  distribute by day; 

 

 

如下是加载样子:

 



 

 

如果是拷贝整个表的列,而不是只拷贝部分列,写法如下:

 insert overwrite table tmp_test partition(day)  select *  from dm_login_class_user_count_distribution_semester  distribute by day

 

 

 

方式2 :

 

方式2: 通过 hadoop cp命令 + hive msck repair命令组合使用

1 create table tmp_test1 like dm_login_class_user_count_distribution_semester;  创建目标表

2 hadoop fs -cp hdfs://Galaxy/user/hive/warehouse/dev_treasury.db/dm_login_class_user_count_distribution_semester/*  hdfs://Galaxy/user/hive/warehouse/dev_treasury.db/tmp_test1/    将原表hdfs数据拷贝到目标表 hdfs目录中

3 进入Hive环境中, 输入 MSCK REPAIR TABLE tmp_test1;

4 验证数据是否加载进来:

 > select * from  dm_login_class_user_count_distribution_semester where day='2016-12-12' limit 1;
OK
2016-12-12      4                                       3301            0                                       EDUCATION_STAFF 769     896     0       2016-12-12

 

 

  • 大小: 100.4 KB
分享到:
评论

相关推荐

    Hive表分区

    Hive表分区,里面有比较详细的Hive表分区方法,希望能够有所帮助。

    修改hive表分区名称

    hive表修改分区数据

    05--Hive的动态分区和分桶1

    北京马士兵教育公众号:马士兵《 Java系列课程》Hive动态分区和分桶北京马士兵教育公众号:马士兵《 Java系列课程》动态分区hive 动态分区– 开启支持

    hive分区表分通表建表语句详解和例子

    详细描述了hive分桶表,分区表的创建,附带详细建表语句,包含一级静态分区,二级静态分区,一级动态分区,二级动态分区,分区的查询,删除,添加,数据的导入

    hive数据分区时分区字段不可为中文。.doc

    hive数据分区时分区字段不可为中文。

    hive 双分区外部表 复合数据结构 样例

    hive双分区外部表复合数据结构博客的数据资料,欢迎下载。

    BLOG_如何将一个普通表转换为分区表.pdf

    BLOG_如何将一个普通表转换为分区表.pdfBLOG_如何将一个普通表转换为分区表.pdf

    Hive的分区表

    Hive分区表 Hive分区表对应的是HDFS上独立的文件夹,该文件夹存放的是该分区的所有数据,其实分区就是分目录。Hive通过分区把一个大的数据集根据业务需要分割成小的数据集,在查询时能够通过where关键词选择指定分区...

    龙战于野大数据MR原理启动hive查询表分区.docx

    大数据MR原理启动hive设置队列,对已经存在hdfs的有分区有表结构和数据信息的表,进行查询表.查询表分区,查询表结构的完整流程如下.学无长幼.

    Hive使用手册Hive使用手册

    目录 1 Hive 概念与连接使用: 2 ...5.1 Hive 添加分区 4 5.2 Hive 删除分区 5 6 SHOW语句 5 7 DESCRIBE语句 5 8 加载数据 5 9表连接 6 10 子查询 6 11 UNION ALL 6 12 Hive使用注意点: 6 13 Hive优化 9

    Hive的三种方式安装与搭建

    hadoop下Hive的三种方式安装与搭建,hadoop下Hive的三种方式安装与搭建

    Hive与Hbase的整合

    Hive与Hbase的整合,集中两者的优势,使用HiveQL语言,同时具备了实时性

    java解决hive快速导数据到Hbase代码

    基于hadoop的,java实现hive快速导数据到Hbase解决方案。

    hive分区导入

    NULL 博文链接:https://jonas-wang.iteye.com/blog/1927709

    Hive几种数据导入方式

    Ambari搭建hadoop环境下,hive的数据导入

    hive

    hive hive hive hive hive hive hive hive hive hive hive hive

    hive metastore java api使用

    hive metastore hive metastore是hive的元数据管理服务,实际应用中很多第三方框架需要访问metastore服务,如spark,impala等。同样hive metastore也提供了java接口。 使用 import org.apache.hadoop.hive.conf....

    【63课时完整版】大数据实践HIVE详解及实战

    16.Hive中数据导出的4种方式及表的导入导出 17.Hive中HQL的基本语法(一) 18.Hive中HQL的基本语法(二) 19.Hive中order by、sort by、distribute by与cluster by的使用 20.Hive中分析函数与窗口函数 21.Hive中UDF...

    hive建表操作案例.txt

    hive分桶,分区操作案例实战。学习的好资料。hive分桶,分区操作案例实战。学习的好资料。hive分桶,分区操作案例实战。学习的好资料。

    hivesql语句练习

    Hive几种使用方式: 1.Hive交互shell bin/hive 2.Hive JDBC服务(参考java jdbc连接mysql) 3.hive启动为一个服务器,来对外提供服务 bin/hiveserver2 nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/...

Global site tag (gtag.js) - Google Analytics