iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Hive中怎么实现动态分区
  • 828
分享到

Hive中怎么实现动态分区

2024-04-02 19:04:59 828人浏览 安东尼
摘要

本篇文章为大家展示了Hive中怎么实现动态分区,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。动态分区调整动态分区属性:设置为true表示开启动态分区功能(默认为fa

本篇文章为大家展示了Hive中怎么实现动态分区,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

动态分区调整

  • 动态分区属性:设置为true表示开启动态分区功能(默认为false)hive.exec.dynamic.partition=true;

  • 动态分区属性:设置为nonstrict,表示允许所有分区都是动态的(默认为strict)设置为strict,表示必须保证至少有一个分区是静态的hive.exec.dynamic.partition.mode=strict;

  • 动态分区属性:每个mapper或reducer可以创建的最大动态分区个数hive.exec.max.dynamic.partitions.pernode=100;

  • 动态分区属性:一个动态分区创建语句可以创建的最大动态分区个数hive.exec.max.dynamic.partitions=1000;

  • 动态分区属性:全局可以创建的最大文件个数hive.exec.max.created.files=100000;

  • 控制DataNode一次可以打开的文件个数  这个参数必须设置在DataNode的$hadoop_HOME/conf/hdfs-site.xml文件中

<property>     <name>dfs.datanode.max.xcievers</name>     <value>8192</value> </property>

注意

在Hive中,动态分区会造成在插入数据过程中,生成过多零碎的小文件

动态分区插入

如果需要创建非常多的分区,用户就需要写非常多的条件查询sql把数据插入对应分区。好在Hive提供了动态分区功能,可以根据分区字段的取值自动创建分区。前面列出的开启动态分区hive.exec.dynamic.partition,并且hive.exec.dynamic.partition.mode需要为非严格模式,通常如果分区很多的话,hive.exec.max.dynamic.partitions.pernode也需要设置为一个较大的数,否则会有报错提醒。

现在有sql:

insert overwrite table employees partitions (country, state) select ...,se.cnty, se.st from staged_employees se;

可以看出,Hive根据select语句中最后两列来确定分区字段country和state的值,这里刻意使用了不同的命名,就是为了强调源表字段和输出分区值之间的关系是根据位置而不是根据命名来匹配的。

动静分区结合

也可以混合使用动态和静态分区。上面那个例子,我们可以指定国家这个分区值五为静态值US,而分区字段state是动态值:

insert overwrite table employees partitions (country = 'US', state) select ...,se.cnty, se.st from staged_employees se where se.cnty = 'US';

注意:静态分区需要出现在动态分区字段之前。

动态分区功能默认情况下是没有开启的,默认是以严格模式执行,这种模式下要求至少有一列分区字段是静态的。这样做的好处是可以防止因设计或其它错误查询导致产生大量的分区,比如sql  boy不小心使用了时间戳作为分区字段,那将是灾难。在日常导入一天的数据,通常是指定日期为静态分区,小时为动态分区,进行混合模式导入。

例子

建表

create table if not exists test.test ( id string, name string ) partitioned by (dt string,hour string) row fORMat delimited fields terminated by '\t';  create table if not exists test.test2 ( id string, name string ) partitioned by (dt string,hour string) row format delimited fields terminated by '\t' stored as orc;

导入数据到test.test表

load data local inpath '/home/hadoop/data/test.txt' into table test.test partition(dt = '2019-09-10', hour = '02');  test.txt 001    keguang 002    kg 003    kk 004    ikeguang

利用动态分区插入

insert overwrite table test.test2 partition(dt, hour) select `(dt|hour)?+.+`,dt,hour from test.test;

上述内容就是Hive中怎么实现动态分区,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: Hive中怎么实现动态分区

本文链接: https://www.lsjlt.com/news/56949.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Hive中怎么实现动态分区
    本篇文章为大家展示了Hive中怎么实现动态分区,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。动态分区调整动态分区属性:设置为true表示开启动态分区功能(默认为fa...
    99+
    2024-04-02
  • Hive中的动态分区和静态分区的区别
    Hive中的动态分区和静态分区是两种不同的分区方式,它们的区别在于分区的创建和管理方式。 静态分区:静态分区是在创建表时就定义好的...
    99+
    2024-03-12
    Hive
  • Hive中静态分区与动态分区的示例分析
    这篇文章给大家分享的是有关Hive中静态分区与动态分区的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  分区是hive存放数据的一种方式。将列值作为目录来存放数据,就是一个分区。这样查询时使用分区列进行...
    99+
    2023-06-02
  • Hive的静态分区与动态分区的区别
    本篇内容介绍了“Hive的静态分区与动态分区的区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1. 静态分区:若分区的值是确定的,那么...
    99+
    2023-06-02
  • Hive中动态轮换分区指的是什么
    在Hive中,动态轮换分区是一种机制,用于在数据加载时自动将数据分发到不同的分区中。这种机制可以使数据加载的过程更加高效和灵活,不需...
    99+
    2024-03-14
    Hive
  • Hive中如何实现分区表
    这篇文章主要为大家展示了“Hive中如何实现分区表”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Hive中如何实现分区表”这篇文章吧。分区表对于一张比较大的表,将其设计成分区表可以提升查询的性能...
    99+
    2023-06-02
  • hive如何实现分区和分桶
    这篇文章主要介绍hive如何实现分区和分桶,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、Hive分区表在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表...
    99+
    2023-06-19
  • Hive中的分区是什么
    Hive中的分区是一种将表数据按照某一列或多列进行划分的方法。通过对数据进行分区,可以提高查询效率,因为只需要对特定分区的数据进行处...
    99+
    2024-04-02
  • ajax+jtemplate怎么实现动态分页
    这篇文章主要介绍“ajax+jtemplate怎么实现动态分页”,在日常操作中,相信很多人在ajax+jtemplate怎么实现动态分页问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • Hive中怎么利用UDF实现文本分词
    Hive中怎么利用UDF实现文本分词,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。UDF 简介Hive作为一个sql查询引擎,自带了一些基本的...
    99+
    2024-04-02
  • Hive中怎么定义和使用表分区
    在Hive中,表分区是按照表的某个列的值进行分割和存储数据的方式,可以提高查询效率和管理数据。以下是在Hive中定义和使用表分区的步...
    99+
    2024-04-03
    Hive
  • MyBatis中怎么实现动态SQL!
    这篇文章将为大家详细讲解有关MyBatis中怎么实现动态SQL!,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、if标签if是最常用标签,经常用在判断语句...
    99+
    2024-04-02
  • Hive中如何实现分桶表
    这篇文章将为大家详细讲解有关Hive中如何实现分桶表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。分桶表通常,当很难在列上创建分区时,我们会使用分桶,比如某个经常被筛选的字段,如果将其作为分区字段,会造成...
    99+
    2023-06-02
  • hive分区表怎么导入数据
    要将数据导入Hive分区表,可以通过以下步骤实现: 准备好要导入的数据文件,确保数据格式与分区表的结构匹配。 使用Hive的...
    99+
    2024-03-12
    hive
  • MySQL中怎么实现分区
    本篇文章为大家展示了MySQL中怎么实现分区,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 一.InnoDB逻辑存储结构首先要先介绍一下InnoDB逻辑存...
    99+
    2024-04-02
  • VB.NET中怎么实现动态标题
    这期内容当中小编将会给大家带来有关VB.NET中怎么实现动态标题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。VB.NET动态标题实现方法一:前台:< title> <...
    99+
    2023-06-17
  • C#中怎么实现动态数组
    C#中怎么实现动态数组,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数组的容量是固定的,但ArrayList的容量可以根据需要自动扩充。当我们修改了ArrayL...
    99+
    2023-06-17
  • linq中怎么实现动态排序
    本篇文章为大家展示了linq中怎么实现动态排序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。想实现linq动态排序就是linq的order by 后跟动态的函数可以用委托实现,但是发现实现委托函数时...
    99+
    2023-06-17
  • Android中怎么实现动态注册
    这期内容当中小编将会给大家带来有关Android中怎么实现动态注册,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。第一种写法:首先新建一个Java类,通过"New/Other/Broadcast ...
    99+
    2023-06-04
  • Java中怎么实现动态代理
    今天就跟大家聊聊有关Java中怎么实现动态代理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、概述 代理是一种设计模式,其目的是为其他对象提供一个代理以控制对某个对象的访问,代理类...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作