`

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
分享到:
评论

相关推荐

    hadoop2.7+hbase1.0+hive1.2+zookeeper3.4.6

    在探讨Hadoop2.7.1、HBase1.0、Hive1.2以及ZooKeeper3.4.6的安装和配置时,我们首先需要了解这些组件的基本功能以及它们在整个大数据处理框架中所扮演的角色。以下对这些知识点进行详细说明: ### Hadoop2.7.1 ...

    MySQL Driver

    解压后,将包含的JAR文件(例如`mysql-connector-java-5.1.32.jar`)拷贝到Hive的lib目录下,或者在启动Hive时通过`-libjars`参数指定其位置。 接下来,需要配置Hive的配置文件`hive-site.xml`。主要涉及以下两个...

    大数据面试100题.pdf

    在MapReduce中,两张表关联通常涉及到Map端连接和Reduce端连接两种方式。Map端连接适合于小表和大表的关联,而Reduce端连接则适合于小表和大表的关联,或者大表和大表的关联。 请谈一下Hive的特点: Hive是一种数据...

    4399大数据笔试题.pdf

    6. HBase的存储底层:HBase的数据存储在Hadoop的HDFS上,主要包括HFile和HLog File两种文件格式。 三、Scala闭包知识点 7. Scala的闭包描述:没有给出具体错误选项,闭包是具有自由变量的函数,能够记住其定义时的...

    Day05_HDFS深入及Hadoop HA.pdf

    在高可用性配置下,存在两个NameNode节点:一个是处于活跃状态的Active NameNode,另一个是处于备用状态的Standby NameNode。通过Zookeeper的选举机制,如果Active NameNode出现故障,Standby NameNode能够接替其...

Global site tag (gtag.js) - Google Analytics