首页 热点资讯 义务教育 高等教育 出国留学 考研考公

hive如何跨分区剔重数据?

发布网友 发布时间:2022-04-25 12:49

我来回答

1个回答

热心网友 时间:2022-04-13 16:03

一、Hive only:加载分区数据的快捷方法

如果指定的分区不存在Hive将创建新的分区

这个命令将:

(1)如果不存在的话添加分区到表的元数据

(2)如果存在的话,创建子目录:/user/hive/warehouse/call_logs/call_date=2014-10-02

(3)移动HDFS文件call-20141002.log到分区子目录

二、查看、添加和移除分区

(1)查看当前表分区

(2)使用ALTER TABLE添加或删除分区

三、  从已存在的分区目录创建分区

(1)HDFS的分区目录可以在Hive或Impala之外进行创建和数据,比如:通过Spark或MapRece应用

(2) Hive中使用MSCK REPAIR TABLE命令来为已存在的表创建分区

四、什么时候使用分区

下列情况使用分区

(1)读取整个数据集需要花费很长时间

(2)查询几乎只对分区字段进行过滤

(3)分区列有合理数量的不同的值

(4)数据生成或ETL过程是按文件或目录名来分段数据的

(5)分区列值不在数据本身

五、什么时候不使用分区

(1)避免把数据分区到很多小数据文件

– 不要对有太多惟一值的列进行分区

(2)注意:当使用动态分区时容易发生

– 比如:按照fname来分区客户表会产生上千个分区

六、  Hive进行分区

在旧的Hive版本中,动态分区默认没有启用 ,通过设置这两个属性启用:

但是在hive分区中我们应该注意一些问题,比如:

(1)注意:Beeline设置的Hive变量只在当前会话有效,系统管理员可以设置永久生效

(2)注意:如果分区列有很多唯一值,将会创建很多分区

另外,我们可以给Hive配置参数来*分区数 :

(1) hive.exec.max.dynamic.partitions.pernode

查询在某个节点上可以创建的最大动态分区数,默认100

(2) hive.exec.max.dynamic.partitions

一个HiveQL语句可以创建的最大动态分区数 ,默认1000

(3)hive.exec.max.created.files

一个查询总共可以创建的最大动态分区数,默认1000000

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com