Hive分区

1、查看分区

Hive> show partitions  table_name;

dt=20101101

dt=20101102

....

Time taken: 0.140 seconds, Fetched: 10 row(s)

2、  hive>desc  tb  partition(dt=20170612) 

3.hive>  desc extended  tb  partition(dt=20170612) 

可以用这个命令查看有时候建立分区是在特定指定location的。

4、建立分区表

CREATE EXTERNAL TABLE seed_my (col MAP<STRING, STRING>) partitioned by (dt string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘  COLLECTION ITEMS TERMINATED BY ‘\t‘ MAP KEYS TERMINATED BY ‘|‘ STORED AS INPUTFORMAT "org.apache.hadoop.mapred.TextInputFormat" OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat" LOCATION ‘s3://up/seed/myhome‘;

5、添加分区

ALTER TABLE table_name ADD PARTITION (dt= ‘$dt‘) location ‘$dt‘;

ALTER TABLE table_name ADD IF NOT EXISTS PARTITION (dt=‘$dt‘) LOCATION ‘/sss/$dt‘; //一次添加一个分区

ALTER TABLE table_name ADD PARTITION (dt=‘$dt‘, hour=‘$hour‘) location ‘/path/$dt/$hour  PARTITION (dt=‘$dt‘,  hour=‘$hour‘) location ‘/path/$dt/$hour‘;  //一次添加多个分区

6\删除分区

ALTER TABLE table_name DROP IF EXISTS PARTITION (dt=‘dt‘);
ALTER TABLE table_name DROP IF EXISTS PARTITION (dt=‘dt‘, hour=‘$hour‘);


修改分区
ALTER TABLE table_name PARTITION (dt=‘$dt‘) SET LOCATION "$path";
ALTER TABLE table_name PARTITION (dt=‘$dt‘) RENAME TO PARTITION (dt=‘$dt_yyyymmdd’);

时间: 2024-12-20 15:41:13

Hive分区的相关文章

Hive分区(静态分区+动态分区)

Hive分区的概念与传统关系型数据库分区不同. 传统数据库的分区方式:就oracle而言,分区独立存在于段里,里面存储真实的数据,在数据进行插入的时候自动分配分区. Hive的分区方式:由于Hive实际是存储在HDFS上的抽象,Hive的一个分区名对应一个目录名,子分区名就是子目录名,并不是一个实际字段. 所以可以这样理解,当我们在插入数据的时候指定分区,其实就是新建一个目录或者子目录,或者在原有的目录上添加数据文件. Hive分区的创建 Hive分区是在创建表的时候用Partitioned b

Hive 分区、桶、Sort Merge Bucket Join

Hive 已是目前业界最为通用.廉价的构建大数据时代数据仓库的解决方案了,虽然也有 Impala 等后起之秀,但目前从功能.稳定性等方面来说,Hive 的地位尚不可撼动. 其实这篇博文主要是想聊聊 SMB join 的,Join 是整个 MR/Hive 最为核心的部分之一,是每个 Hadoop/Hive/DW RD 必须掌握的部分,之前也有几篇文章聊到过 MR/Hive 中的 join,其实底层都是相同的,只是上层做了些封装而已. 前面两个很好理解,基本上每个人都会接触到,但最后一种,可能有同学

Talend 将Oracle中数据导入到hive中,根据系统时间设置hive分区字段

首先,概览下任务图: 流程是,先用tHDFSDelete将hdfs上的文件删除掉,然后将oracle中的机构表中的数据导入到HDFS中:建立hive连接->hive建表->tJava获取系统时间->tHiveLoad将hdfs上的文件导入到hive表中. 下面介绍每一个组件的设置: tHDFSDelete_1: 机构: tHDFSOutput_1: hive: tHiveCreateTable: tJava_1: tHiveLoad_1: 在Context下面建一个内容变量: 这个内容变

Hive分区和桶的概念

Hive 已是目前业界最为通用.廉价的构建大数据时代数据仓库的解决方案了,虽然也有 Impala 等后起之秀,但目前从功能.稳定性等方面来说,Hive 的地位尚不可撼动. 其实这篇博文主要是想聊聊 SMB join 的,Join 是整个 MR/Hive 最为核心的部分之一,是每个Hadoop/Hive/DW RD 必须掌握的部分,之前也有几篇文章聊到过 MR/Hive 中的 join,其实底层都是相同的,只是上层做了些封装而已,如果你还不了解究竟 Join 有哪些方式,以及底层怎么实现的,请参考

深刻理解hive分区,分区只是一种逻辑结构

网上有篇关于hive的partition的使用讲解的比较好,转载了: 一.背景 1.在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作.有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念. 2.分区表指的是在创建表时指定的partition的分区空间. 3.如果需要创建有分区的表,需要在create表的时候调用可选参数partitioned by,详见表创建的语法结构. 二.技术细节 1.一个表可以拥有一个或者多个分区,每个分区以文件夹的形

hive分区导致FAILED: Hive Internal Error: java.lang.NullPointerException(null)

写了一条hive sql ,其中条件中存在 dt>=20150101 and dt<=20150228 这样的条件,原来执行没问题,今天就抛出 FAILED: Hive Internal Error: java.lang.NullPointerException(null)java.lang.NullPointerException at org.apache.hadoop.hive.ql.optimizer.pcr.PcrExprProcFactory.opAnd(PcrExprProcFa

Hive分区与桶表

1.分区 在hive中使用select查询一般会扫描整个表的内容,从而降低降低查询的效率.引入分区的概念,使得查询时只扫描表中关心的部分数据. 一个表中可以有一个或多个分区,每个分区以文件夹的形式单独存在表文件夹的目录下. 1.1分区建表分为单分区和双分区建表: 单分区建表语句:create table sample_table (id int, value string) partitioned by (age int) row format delimited fields terminat

Hive分区和桶

SMB 存在的目的主要是为了解决大表与大表间的 Join 问题,分桶其实就是把大表化成了“小表”,然后 Map-Side Join 解决之,这是典型的分而治之的思想.在聊 SMB Join 之前,我们还是先复习下相关的基础概念. 1.Hive 分区表 在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作.有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念.分区表指的是在创建表时指定的partition的分区空间. Hive可以对数据按照某列或

hive 分区时 分别使用 年,月,日 来进行分区

创建表 create [external<外联>] table log_app_web (log map<string,string>) partitioned by (year int,month int,day int) ROW FORMAT DELIMITED COLLECTION ITEMS TERMINATED BY '\t' MAP KEYS TERMINATED BY '=' STORED AS ORC; 表名:log_app_web 字段:Map类型字段 log 分