`
cumtheima
  • 浏览: 256242 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

hive学习总结(5)—分区、分桶和索引

    博客分类:
  • Hive
阅读更多

1.分区

 

分区是以字段的形式在表结构中存在,通过describe table命令可以查看到字段存在, 但是该字段不存放实际的数据内容,仅仅是分区的表示(伪列)。

 

(1)静态分区

create table if not exists sopdm.wyp2(id int,name string,tel string)

partitioned by(age int)

row format delimited

fields terminated by ','

stored as textfile;

 

 --overwrite是覆盖,into是追加

insert into table sopdm.wyp2

partition(age='25')

select id,name,tel from sopdm.wyp;

 

(2)动态分区

--设置为true表示开启动态分区功能(默认为false)

set hive.exec.dynamic.partition=true;

--设置为nonstrict,表示允许所有分区都是动态的(默认为strict)

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

 

--insert overwrite是覆盖,insert into是追加

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

insert overwrite table sopdm.wyp2

partition(age)

select id,name,tel,age from sopdm.wyp;

 

2. 分桶 

 

CREATE TABLE bucketed_user (id INT) name STRING)

CLUSTERED BY (id) INTO 4 BUCKETS;

 

对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。Hive也是 针对某一列进行桶的组织。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。

把表(或者分区)组织成桶(Bucket)有两个理由:

(1)获得更高的查询处理效率。桶为表加上了额外的结构,Hive 在处理有些查询时能利用这个结构。具体而言,连接两个在(包含连接列的)相同列上划分了桶的表,可以使用 Map 端连接 (Map-side join)高效的实现。比如JOIN操作。对于JOIN操作两个表有一个相同的列,如果对这两个表都进行了桶操作。那么将保存相同列值的桶进行JOIN操作就可以,可以大大较少JOIN的数据量。

(2)使取样(sampling)更高效。在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分数据上试运行查询,会带来很多方便。

 

3.索引

 

索引可以加快含有group by语句的查询的计算速度

 

create index employees_index on table employees(country)

as  'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'

with deferred rebuild

in table employees_index_table ;

 

1
1
分享到:
评论
2 楼 icecloudsky 2016-11-04  
1 楼 cumtheima 2014-11-24  
文章不错,有待进步!

相关推荐

    Hive总结.docx

    - 使用分区和桶表,提高查询效率。 - 利用索引加速查询。 - 合理选择计算引擎,Tez和Spark相对于MapReduce能提供更好的性能。 - 减少数据倾斜,通过数据预处理、分区优化等方式避免部分节点负担过重。 【数据倾斜】...

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

    在Hive中,表分区是指将一个大表分割成多个小表,每个小表都有其自己的存储位置和索引。表分区可以提高数据查询的效率,因为可以根据查询条件来选择相应的分区进行查询。Hive提供了多种方式来创建表分区,包括静态...

    王家林hive学习资料

    《王家林Hive学习资料》是一份详尽的教程,旨在帮助学员深入了解和掌握Hive这一数据仓库工具。Hive在企业Hadoop应用中扮演着核心角色,尤其在大规模离线数据分析方面表现卓越,被Facebook、淘宝等大型公司广泛采用。...

    Hive学习总结及应用.pdf

    《Hive学习总结及应用》 Hive,作为大数据处理领域的重要工具,是构建在Hadoop生态系统之上的一种数据仓库工具,旨在提供SQL-like查询语言(HiveQL)以简化对大规模分布式数据集的操作。它的核心功能是将结构化的...

    02hive学习总结及应用.pdf

    【Hive 学习总结及应用】 Hive 是一个基于 Hadoop 的数据仓库工具,它提供了 SQL-like 的查询语言——HiveQL,使得用户能够方便地处理存储在 HDFS 上的大规模数据集。Hive 旨在简化数据ETL(提取、转换、加载)流程...

    hive学习笔记-比较全的知识

    标题中提到的"Hive学习笔记-比较全的知识"和描述中所述"相当不错的,适合初学者,下载绝对不亏"意味着本篇文档旨在为初学者提供一个全面的学习指南,覆盖Hive的主要概念和操作。而标签"hive"确定了文档的中心主题是...

    Hive的分区表

    Hive分区表对应的是HDFS上独立的文件夹,该文件夹存放的是该分区的所有数据,其实分区就是分目录。Hive通过分区把一个大的数据集根据业务需要分割成小的数据集,在查询时能够通过where关键词选择指定分区,从而提高...

    02 Hive学习总结及应用.pdf

    【Hive学习与应用】 Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL-like的语言,即HiveQL(Hive Query Language),对存储在HDFS(Hadoop Distributed File System)上的大规模数据进行分析和处理。Hive...

    Hive学习笔记

    Hive 是一种基于 Hadoop 的数据仓库工具,...这些只是 Hive 部分核心概念和操作,实际使用中还涉及到更复杂的查询优化、性能监控、视图、索引、安全控制等多个方面。学习 Hive 需要结合实际场景和大量实践来加深理解。

    Hive学习笔记(更新版)

    通过上述内容的学习,我们不仅了解了Hive的基本概念、架构和安装过程,还深入探讨了Hive如何在Hadoop生态系统中发挥作用。对于初学者而言,掌握这些基础知识是十分重要的,这将帮助他们在后续的学习过程中更加顺利地...

    大数据系列-Hive

    1. **分桶与分区**:Hive支持表的分区和分桶,提高查询效率。分区是按照指定字段将数据逻辑上划分为多个部分,如按日期分区;分桶则是基于哈希函数将数据物理分割,用于优化JOIN操作。 2. **视图与索引**:视图可以...

    阿里巴巴Hive学习笔记.docx

    总的来说,《阿里巴巴Hive学习笔记》是一份详尽的资料,旨在帮助读者理解Hive的核心概念和操作,从而更好地利用Hive处理和分析海量数据。对于希望进入大数据领域的学习者来说,这是一份宝贵的资源。

    hive语法总结

    Hive 语法总结是一种基于 Hadoop 的数据仓库工具,它提供了类似 SQL 的查询语言,用于处理和分析大规模数据。下面是 Hive 语法总结的知识点: 1. SELECT 语句 Hive 的 SELECT 语句结构如下: SELECT [ALL | ...

    大数据hive笔记.zip

    Hive的数据模型基于关系型数据库,包括数据库、表、分区和桶。其中,表可以被划分为多个分区,以提高查询效率;桶则用于实现数据的排序和并行处理。 四、Hive操作 1. 创建表:用户可以使用CREATE TABLE语句创建表,...

    hive学习笔记

    Hive的学习不仅包括这些基本操作,还包括性能调优、视图、索引、UDF(用户自定义函数)的使用,以及如何与其他Hadoop组件如HBase、Spark集成等。理解Hive的工作原理和最佳实践,对于在大数据环境中进行高效的数据...

    第6章:Hive性能优化及Hive3新特性1

    - **分桶表**:进一步优化,Hive允许在分区的基础上对数据进行分桶,每个桶是一个逻辑上的数据集合。分桶表有助于提高查询性能,尤其在执行Join操作时,通过匹配相同的桶号可以减少JOIN的计算量。然而,分桶设计需...

    Hive学习资料

    根据提供的标题“Hive学习资料”以及描述中的信息“入门级别的,英文的,有14页”,我们可以推测这份文档主要面向的是对Hive感兴趣的初学者,并且内容是用英文编写的。下面将根据这些信息来生成相关的Hive知识点。 ...

    尚硅谷大数据视频_Hive视频教程

    7. **视图与索引**:学习如何创建和使用视图简化复杂查询,以及Hive的索引机制,虽然Hive的索引功能相对有限,但仍然可以提高某些查询的速度。 8. **数据倾斜与优化**:了解数据倾斜问题,这是大数据处理中的常见...

    Hadoop和HIVE面试题

    4. 索引:虽然Hive不支持传统意义上的数据库索引,但可以通过创建外部表和视图来实现类似的功能,提高查询速度。 在面试中,可能会遇到的问题涵盖以下几个方面: 1. Hadoop的两个主要组成部分是什么?它们各自的...

    Hive使用手册Hive使用手册

    5. **Hive分区** 分区是提高Hive查询效率的一种手段,允许用户将大表划分为小块。添加分区:`ALTER TABLE my_table ADD PARTITION (partition_col='value');` 删除分区:`DROP PARTITION IF EXISTS my_table ...

Global site tag (gtag.js) - Google Analytics