Hive 分区介绍:

hive中简单介绍分区表(partition table),含动态分区(dynamic partition)与静态分区(static partition)

hive中创建分区表没有什么复杂的分区类型(范围分区、列表分区、hash分区、混合分区等)。

分区列也不是表中的一个实际的字段,而是一个或者多个伪列。意思是说在表的数据文件中实际上并不保存分区列的信息与数据。

分区改变了HIVE 对数据存储的组织方式,hive 会创建反应分区结构的子目录,就是那些实际的目录名称。

对数据进行分区,最主要的原因就是为了更快的查询。

可以通过,show partitions 表名  查看表中存在的所有分区,

或者

describe extended  表名

desc 表名

动态分区:

当需要创建非常多的分区的时候,Hive提供了动态分区的功能:

可以基于查询的参数,推断出需要创建分区的名称。

INSERT OVERWRITE TABLE emp PARTITION (country, state)  SELECT ..., ... , se.cnty, se.st

FROM staged_emp se;

  

需要注意,字段值和分区之间的关系是根据位置而不是字段名称来进行匹配的。

动态分区也可以和静态分区混合使用,但是静态分区必须出现在动态分区之前。

举例:使用动态分区要先设置hive.exec.dynamic.partition参数值为true,默认值为false;

动态分区的使用方法很简单,假设我想向stat_date='20110728'这个分区下面插入数据,至于province插入到哪个子分区下面让数据库自己来判断,那可以这样写:

insert overwrite table partition_test partition(stat_date='20110728',province)

select member_id,name,province from partition_test_input where stat_date='20110728';

stat_date叫做静态分区列,province叫做动态分区列。

select子句中需要把动态分区列按照分区的顺序写出来,静态分区列不用写出来。这样stat_date='20110728'的所有数据,会根据province的不同分别插入到/user/hive/warehouse/partition_test/stat_date=20110728/下面的不同的子文件夹下,如果源数据对应的province子分区不存在,则会自动创建,非常方便,

而且避免了人工控制插入数据与分区的映射关系存在的潜在风险。

注意,动态分区不允许主分区采用动态列而副分区采用静态列,这样将导致所有的主分区都要创建副分区静态列所定义的分区:

insert overwrite table partition_test partition(stat_date,province='liaoning')

select member_id,name,province from partition_test_input where province='liaoning';

  

FAILED: SemanticException [Error 10094]: Line 1:49 Dynamic partition cannot be the parent of a static partition ''liaoning''

问题:一般是建表的时候,分区表的顺序出现了问题,静态分区一定要再动态分区的前面。

动态分区可以允许所有的分区列都是动态分区列,但是要首先设置一个参数hive.exec.dynamic.partition.mode :

set hive.exec.dynamic.partition.mode;
hive.exec.dynamic.partition.mode=strict

  

hive SQL 静态分区和 动态分区的更多相关文章

  1. 什么是hive的静态分区和动态分区,它们又有什么区别呢?hive动态分区详解

    面试官问我,什么是hive的静态分区和动态分区,这题我会呀. 简述 分区是hive存放数据的一种方式,将列值作为目录来存放数据,就是一个分区,可以有多列. 这样查询时使用分区列进行过滤,只需根据列值直 ...

  2. Hive的静态分区和动态分区

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/6831884.html 转载请注明出处 虽然之前已经用过很多次hive的分区表,但是还是找时间快速回顾总结 ...

  3. Hive中静态分区和动态分区总结

    目录 背景 第一部分 静态分区 第二部分 动态分区 第三部分 两者的比较 第四部分 动态分区使用的问题 参考文献及资料 背景 在Hive中有两种类型的分区:静态分区(Static Partitioni ...

  4. 对现有Hive的大表进行动态分区

    分区是在处理大型事实表时常用的方法.分区的好处在于缩小查询扫描范围,从而提高速度.分区分为两种:静态分区static partition和动态分区dynamic partition.静态分区和动态分区 ...

  5. 【HIVE】(2)分区表、二级分区、动态分区、分桶、抽样

    分区表: 建表语句中添加:partitioned by (col1 string, col2 string) create table emp_pt(id int, name string, job ...

  6. Hive静态分区和动态分区

    一.静态分区 1.创建分区表 hive (default)> create table order_mulit_partition( > order_number string, > ...

  7. Hive静态分区和动态分区,对应Mysql中的元数据信息

    静态分区: 手动指定分区加载数据,就是常说的静态分区的使用.但是在日常工作中用的比较多的是动态分区. 创建: hive> create table order_mulit_partition( ...

  8. Hive Experiment 2(表动态分区和IDE)

    1.使用oracle sql developer 4.0.3作为hive query的IDE. 下载hive-jdbc driver http://www.cloudera.com/content/c ...

  9. hive学习(六) 参数和动态分区

    1.hive 参数.变量 1.1hive的命名空间: hive当中的参数.变量,都是以命名空间开头  

随机推荐

  1. metasploit支持利用的CVE

    因为需要添加许多漏洞的流量检测,所以需要模拟很多漏洞的利用过程,简单来说,就是抓漏洞利用过程的流量. 一个脚本对metasploit中的module中包含的cve字段进行提取,而后去重,得出metas ...

  2. webstorm离线装载Material Theme UI

    首先说说需求,由于直接用webstorm听说VS挺火的,但是初恋的感觉是其他任何编辑器无法替代的 瞎说了一些话,新公司内网开发,用的是vscode,但是我还是喜欢用webstorm,连不上网,所以不能 ...

  3. python数据结构之队列(一)

    队列概念 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出的(First In First Out)的线性表,简称FIFO.允许插入的一端为队尾,允许 ...

  4. 自定义sshd服务

    1.安装rsyslog服务和sshd服务并启动 2.配置日志文件    vim /etc/rsyslog.conf        在里面添加一行 local*.    /var/log/sshd.lo ...

  5. LOJ.6068.[2017山东一轮集训Day4]棋盘(费用流zkw)

    题目链接 考虑两个\(\#\)之间产生的花费是怎样的.设这之间放了\(k\)个棋子,花费是\(\frac{k(k-1)}{2}\). 在\((r,c)\)处放棋子,行和列会同时产生花费,且花费和该行该 ...

  6. java 实验 三 (1)

    (1)金字塔:Pyramid.java在屏幕上显示一个由星型符号“*”组成的金字塔图案,要求用户设置金字塔的高度,程序能根据用户设置的高度打印金字塔,示例如下: * ******** package ...

  7. Spring 的 AOP 进行事务管理的一些问题

    AspectJ AOP事务属性的配置(隔离级别.传播行为等): <tx:advice id="myAdvice" transaction-manager="mtTx ...

  8. Unity 显示FPS(C#语言)

    直接上脚本了: using UnityEngine; using System.Collections; public class ShowFPS : MonoBehaviour { //设置帧率 A ...

  9. C# 哈希表HashTable的简单使用

    本人C#程序菜鸟级别的存在,写博客一方面是为了知识的共享,另一方面也是为了督促自己:大神,可以忽略这篇文文的.废话到此...... 哈希表是可以直接进行访问的数据结构,在形式上是类似字典的.不同的是, ...

  10. web中icon 图标问题

    每个页面都会引入 icon 小图标,下面说下它的用法 一.icon使用 icon的引入方式,与css外部引入方式类似,需要在头部引入, 即: <link rel="shortcut i ...