`
k_lb
  • 浏览: 856231 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

HIVE 动态分区与静态分区

 
阅读更多
HIVE分区,实际上是通过一个路径来标识的,而不是在物理数据中。比如每天的数据,可能分区是pt=20121023这样,那么路径中它就会变成:/hdfs/path/pt=20121023/data_files。通过路径来标识的好处是,如果我们需要取特定分区的数据,只需要把这个路径下的数据取出来就可以了,不用扫描全部的数据。

HIVE默认是静态分区。但是有时候可能需要动态创建不同的分区,比如商品信息,我想根据它是否在线分成两个分区,这样后续如果要取在线商品,就只需要从在线的分区获取即可。动态分区可以通过下面的设置来打开:

  1. sethive.exec.dynamic.partition=true;
  2. sethive.exec.dynamic.partition.mode=nonstrict;

然后代码里就可以这么写:

  1. insertoverwritetabletbl_namepartition(pt,if_online)
  2. selectfield1,field2,...,pt,if_online
  3. fromtbl
  4. wherexxx;

注意输入字段的最后面必须是动态分区字段。

看一下与静态分区写法的区别:

  1. insertoverwritetabletbl_namepartition(pt=20121023,if_online=1)
  2. selectfield1,field2,...,fieldn
  3. fromtbl
  4. wherexxx;

动态分区与静态分区还有一个细微的差别是,静态分区一 定会创建分区,不管SELECT语句的结果有没有数据。而动态分区,只有在SELECT结果的记录数>0的时候,才会创建分区。因此在不同的业务场景下,可能会选择不同的方案。

另外使用动态分区时需要注意的比较重要的一点是,动态分区会为每一个分区分配reduce数。比如说你在脚本上面写了:set mapred.reduce.tasks=100;

并且有两个分区:pt, if_online。如果结果集中pt=20121023,if_online=0/1,那么它就会为pt=20121023/if_online=0,pt=20121023/if_online=1各分配100个reduce。也就是说,namenode会同时处理200个文件的写操作。这在分区值很多的情况下,会成为一个灾难,容易直接把namenode给搞挂掉,是非常危险的。因此使用动态分区时,一定要清楚地知道产生的动态分区值,并且合理地设置reduce数量。
分享到:
评论

相关推荐

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

    ### Hive 分区表与分桶表详解 #### 一、Hive 分区表概念与应用场景 ...通过对以上Hive分区表的概念、创建方法及管理操作的了解,我们可以更加高效地管理和查询大型数据集,从而提高数据分析的效率和准确性。

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

    Hive提供了多种方式来创建表分区,包括静态分区和动态分区。 查询表分区 查询表分区是指根据查询条件来选择相应的分区进行查询。在Hive中,可以使用以下命令来查询表分区: `hive> show partitions table_name;` ...

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

    2. `hive.exec.dynamic.partition.mode=nostrict`:默认为`strict`模式,要求至少有一个分区键是静态的。如果设置为`nostrict`,则允许所有分区键都是动态的。 在插入数据时,可以使用`insert overwrite table`语句...

    hive学习必备经典(百度)

    Hive提供了静态分区和动态分区两种方式。静态分区是指在创建表时指定分区列和分区值,而动态分区是指在查询时动态生成分区。 Hive其它操作 Hive还提供了许多其它操作,如数据导入、数据导出、数据查询等。下面是...

    apache-hive-1.2.1源码包(已编译)(含Hive的使用全解)

    Hive支持动态和静态分区,通过分区可以将大规模数据组织成更小的逻辑块,提高查询效率。分区通常基于时间戳、地理位置等维度,使得查询能更快地定位到所需数据。 5. **Hive的存储模型** Hive数据以文本文件形式...

    Hive总结.docx

    - 动态分区,根据键值范围动态分配数据。 - 使用Stitch Join或其他聚合方法来平衡负载。 总的来说,Hive是一个强大的大数据分析工具,它简化了在Hadoop上的数据查询和分析过程,为大数据分析提供了便利。通过理解其...

    hive-0.8.1.tar.gz.zip下载

    Hive-0.8.1支持静态分区和动态分区,允许用户根据实际数据分布灵活地设计分区策略。 5. **文件格式和SerDe**:Hive支持多种文件格式,如TextFile、SequenceFile、RCFile等。SerDe(Serializer/Deserializer)是Hive...

    Hive学习笔记

    - Hive 提供了两种模式:静态分区和动态分区。静态分区在建表时指定分区值,动态分区则在插入数据时根据查询动态生成分区。 7. **Hive 元数据**: - Hive 的元数据(如表结构、分区信息等)存储在 metastore,...

    apache-hive-2.3.7-bin.tar.gz

    2. **加载数据**:将数据从外部源导入到 Hive 表中,可以是静态加载或动态加载。 3. **查询分析**:使用 HQL 编写查询语句,进行数据筛选、聚合、关联等操作。 4. **结果导出**:将查询结果导出到本地文件或其他数据...

    大数据学习:Hive数据操作语言.pdf

    动态分区、静态分区和混合分区是Hive数据操作语言的高级操作,用于将数据插入到分区表中。动态分区的语法格式如下: INSERT INTO table_name PARTITION (partcol1=val1, partcol2=val2 ...) VALUES (value1, value2...

    apache-hive-1.2.1

    - **批处理**:Hive设计用于处理大量静态数据,适合离线数据分析。 - **扩展性**:通过Hadoop,Hive可以水平扩展以处理PB级别的数据。 - **兼容性**:Hive可以与多种数据源集成,如HDFS、HCatalog等。 - **容错性**...

    Hive用户指南

    本文将深入探讨Hive的结构、特点、与Hadoop的关系以及元数据库等核心概念,并介绍Hive的基本操作,包括创建表、管理分区等。 1. HIVE 结构 Hive的核心架构由四部分组成:客户端、元数据存储、Hive服务器和存储层。...

    hive用户指南

    数据文件可以是静态的,也可以动态加载。Hive支持多种文件格式,如TextFile、SequenceFile、ORC和Parquet,其中ORC和Parquet提供了更好的压缩和列式存储,提升了查询效率。 6. **Hive基本操作** - **创建表**:...

    大数据组件 Hive 面试题 + Hive 高频面试题

    接下来是Hive中的排序与分区操作。`Sort By`确保了分区内的数据有序,`Order By`实现全局排序,通常需要单个Reducer。`Distribute By`控制数据分发至不同的Reducer,与`Sort By`配合使用可实现特定分区内的排序。`...

    大数据技术之Hive.docx

    3. 数据更新:Hive更适合静态数据分析,不支持频繁的数据修改,而数据库支持INSERT和UPDATE操作。 4. 索引:Hive无索引,数据访问需全表扫描,延迟高;数据库通常有索引,对特定条件数据访问效率高。 综上,Hive...

    大数据 虚拟机 Linux VM复习题库:题库包括了60题选择题、10题填空题、10题判断题、2题简答题,助你度过期末复习

    3. **静态分区与动态分区的区别**: 静态分区是在创建表时预先定义分区值,而动态分区则在插入数据时根据INSERT语句中的表达式动态确定分区。静态分区适合于分区值已知且不经常变化的情况,而动态分区适用于分区值...

    hive词法语法分析草稿0.3

    静态分析语法文件通常是通过ANTLR提供的工具如ANTLRWorks来查看和调试语法规则,而动态分析则是运行解析器以验证和测试这些规则。 ANTLR语法的简单介绍会涵盖其基本语法元素,如规则定义、动作代码和语法错误处理。...

    Hive 编程指南(书签版)

    1. **Hive客户端**:用户通过Hive CLI(命令行接口)或HiveServer2与Hive交互,提交查询并接收结果。 2. **元数据存储**:Hive使用Metastore服务存储元数据,如表结构、分区信息等,通常存储在关系型数据库(如...

    HIVE操作注册表.rar

    开发者需要了解Hive的数据模型、分区策略以及Hadoop集群的运行机制。同时,对于Windows注册表,需要熟悉其结构,如HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER等根键,以及如何安全地读写键值。 综上所述,"HIVE操作...

Global site tag (gtag.js) - Google Analytics