`
superlxw1234
  • 浏览: 552320 次
  • 性别: Icon_minigender_1
  • 来自: 西安
博客专栏
Bd1c0a0c-379a-31a8-a3b1-e6401e2f1523
Hive入门
浏览量:44548
社区版块
存档分类
最新评论

[一起学Hive]之五-Hive的视图和分区

    博客分类:
  • hive
阅读更多

同关系型数据库一样,Hive中也支持视图(View)和分区(Partition),但与关系型数据库中的有所区别,本文简单介绍Hive中视图和分区的示例。

在真实业务场景下,视图的应用比较少,分区使用的非常多,因此建议对分区这块多花的时间来了解。

 

四、Hive的视图和分区

4.1 Hive中的视图

和关系型数据库一样,Hive中也提供了视图的功能,注意Hive中视图的特性,和关系型数据库中的稍有区别:

  • 只有逻辑视图,没有物化视图;
  • 视图只能查询,不能Load/Insert/Update/Delete数据;
  • 视图在创建时候,只是保存了一份元数据,当查询视图的时候,才开始执行视图对应的那些子查询;

4.1.1 创建视图

CREATE VIEW [IF NOT EXISTS] [db_name.]view_name [(column_name [COMMENT column_comment], …) ]

[COMMENT view_comment]

[TBLPROPERTIES (property_name = property_value, …)]

AS SELECT …;

 

例如:

 

CREATE VIEW IF NOT EXISTS v_lxw1234 (url COMMENT ‘url’)

COMMENT ‘view lxw1234′

AS SELECT url FROM lxw1234

WHERE url LIKE ‘http://%’

LIMIT 100;

 

4.1.2 删除视图

DROP VIEW IF EXISTS v_lxw1234;

 

4.1.3 修改视图

ALTER VIEW v_lxw1234 AS

SELECT url FROM lxw1234 limit 500;

 

 

更多关于Hive视图的介绍,请参考官方文档:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/AlterView

 

4.2 Hive中的表分区

Hive中的表分区比较简单,就是将同一组数据放到同一个HDFS目录下,当查询中过滤条件指定了某一个分区值时候,只将该分区对应的目录作为Input,从而减少MapReduce的输入数据,提高查询效率。

 

4.2.1 创建分区表

CREATE EXTERNAL TABLE t_lxw1234 (

id INT,

ip STRING COMMENT ‘访问者IP’,

avg_view_depth DECIMAL(5,1),

bounce_rate DECIMAL(6,5)

) COMMENT ‘lxw的大数据田地-lxw1234.com’

PARTITIONED BY (month STRING, day STRING)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘,’

STORED AS textfile;

 

  • 在创建表时候,使用PARTITIONED BY关键字来指定该表为分区表,后面括号中指定了分区的字段和类型,分区字段可以有多个,在HDFS中对应多级目录。
  • 比如,上面的表t_lxw1234分区month=’2015-06’,day=’2015-06-15’对应HDFS上的路径为:/user /hive/warehouse/default.db/t_lxw1234/month=2015-06/day=2015-06-15/,当查询中指 定了month=’2015-06’ AND day=’2015-06-15’,MapReduce直接从该目录中读取数据,如果只指定了month=’2015-06’,那么MapReduce将 /month=2015-06/下所有的子目录都作为Input。

4.2.2 添加分区

  • 使用INSERT添加分区:

往分区中追加数据:

INSERT INTO TABLE t_lxw1234 PARTITION (month = ‘2015-06′,day = ‘2015-06-15′)

SELECT * FROM dual;

覆盖分区数据:

INSERT overwrite TABLE t_lxw1234 PARTITION (month = ‘2015-06′,day = ‘2015-06-15′)

SELECT * FROM dual;

  • 使用ALTER TABLE添加分区:

ALTER TABLE t_lxw1234 ADD PARTITION (month = ‘2015-06′,day = ‘2015-06-15′) location ‘hdfs://namenode/tmp/lxw1234/month=2015-06/day=2015-06-15/';

4.2.3 查看分区对应的HDFS路径

  • 使用命令 show partitions t_lxw1234; 查看表的所有分区:

hive> show partitions t_lxw1234;

OK

month=2015-01/day=2015-01-25

month=2015-01/day=2015-01-31

month=2015-02/day=2015-02-15

month=2015-02/day=2015-02-28

month=2015-03/day=2015-03-15

month=2015-03/day=2015-03-31

  • 使用desc formatted t_lxw1234 partition (month = ‘2015-01’ , day = ‘2015-01-25′);

查看该分区的详细信息,包括该分区在HDFS上的路径:

Location:               hdfs://namenode/user/hive/warehouse/default.db/t_lxw1234/month=2015-01/day=2015-01-25/

4.2.4 删除分区

可以使用 ALTER TABLE t_lxw1234 DROP PARTITION (month = ‘2015-01’, day = ‘2015-01-25’);

删除一个分区;

同内部表和外部表,如果该分区表为外部表,则分区对应的HDFS目录数据不会被删除。

 

更多关于分区的介绍,可参考官方文档:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AddPartitions

 

Hive相关文章(持续更新)

一起学Hive系列

—-Hive概述,Hive是什么

—-Hive函数大全-完整版

—-Hive中的数据库(Database)和表(Table)

—-Hive的安装配置

Hive分析函数系列

Hive索引

hive优化之——控制hive任务中的map数和reduce数

1
0
分享到:
评论
1 楼 annmi_cai 2016-03-11  
顶顶更健康

相关推荐

    apache-hive-2.1.0-bin.tar.zip

    对于复杂的查询,可以使用Hive的分桶、分区、物化视图等功能来优化性能。 总的来说,Apache Hive 2.1.0 是一个强大的大数据处理工具,适合于对海量数据进行离线分析和报表生成。它的出现极大地简化了大数据处理的...

    apache-hive-2.3.0-bin.tar.gz

    5. **Hive Metastore**:存储关于Hive对象(如表、分区等)的元数据,方便查询和管理。 **Hive 2.3.0中的主要改进和特性:** 1. **Tez执行引擎**:除了传统的MapReduce,Hive 2.3.0支持更高效的Tez执行引擎,它...

    apache-hive-2.2.0-src.tar.gz

    5. **分区与桶**:为了提高查询效率,Hive 支持数据分区和桶的概念。分区将大表按特定列的值分成小块,桶则是按照哈希函数将数据分组,便于并行处理。 6. **视图与联合**:Hive 还支持创建视图,简化复杂查询,并...

    hive-0.10.0-cdh4.2.1

    为了优化性能,可以考虑使用分区、桶化、压缩等技术,以及调整Hive的执行计划和MapReduce的参数。 8. **维护与监控**:定期检查Hive的日志,使用工具如Ambari或Cloudera Manager监控Hive服务的运行状态,确保其健康...

    apache-hive-1.1.1-src.tar

    2. **HiveQL**:Hive 的查询语言,类似于 SQL,允许用户定义数据结构、加载数据、执行查询和创建视图。HiveQL 解析器在源代码中实现,解析用户的查询并转换为适合 MapReduce 的任务。 3. **编译器**:将解析后的 ...

    apache-hive-3.1.2-src.tar.gz

    5. **Hcatalog**:提供元数据服务,允许其他工具(如 Pig、MapReduce)访问 Hive 的表和分区。 **Hive 的主要功能:** 1. **数据仓库**:支持创建、管理、查询和分析大规模数据集。 2. **数据ETL(抽取、转换、加载...

    hive-1.1.0-cdh5.5.0.tar.gz

    1. **元数据管理**:Hive的核心功能之一是元数据管理,它存储关于数据表结构和分区的信息。元数据存储在MySQL或Derby等关系型数据库中,使得Hive可以理解HDFS上的数据文件格式。 2. **HQL支持**:Hive提供了一种类...

    hive-2.1.0.rar

    其中,Hive Server负责接收客户端请求,Metastore存储表和分区的元数据,解析器将HQL转换为解析树,编译器再将其转化为MapReduce或Tez任务,优化器进行查询计划的优化,最后执行器负责调度和运行这些任务。...

    apache-hive-1.2.2-windows_linux.zip

    对于开发人员和数据分析师,理解 Hive 的基本概念,如表、分区、桶、视图、函数和联合查询,是至关重要的。此外,熟悉 HQL 的语法,如 SELECT、FROM、WHERE、JOIN 和 GROUP BY 语句,能够帮助他们更有效地查询和分析...

    Hive教程--命令

    Hive 教程--命令 Hive 是一种数据库技术,可以定义数据库和...这些知识点涵盖了 Hive 的基本操作,包括创建数据库、删除数据库、创建表、修改表、删除表、分区、内置运算符、内置函数、视图和索引、HiveQL Select 等。

    apache-hive-1.2.0-bin.tar

    7. **Hive的性能优化**:Hive支持多种优化策略,如分区、桶、物化视图、Tez或Spark执行引擎的选择,以及使用Hive的EXPLAIN命令分析查询计划。 通过以上内容,我们可以了解到Apache Hive的核心功能和其与MySQL的集成...

    hive执行计划可视化工具

    - **Tez视图**:在Hadoop YARN上运行的Hive查询可以使用Tez视图来查看DAG(有向无环图)表示的执行计划。 - **Beeline或Hive CLI增强工具**:有些第三方工具可以增强Hive的命令行接口,添加执行计划的可视化功能。 ...

    Hive编程指南-2013.12.pdf

    五、Hive表和分区 创建表时,可以指定列数据类型、是否分区等。分区是将大表逻辑上划分为小块,每个分区对应一个目录,通常根据时间戳或地理位置等字段进行划分。查询时可以只扫描所需分区,减少不必要的I/O操作。 ...

    Hive用户指南(Hive-user-guide)-中文版.doc

    Hive还提供了多种优化策略,如创建物化视图、使用外部表、调整执行计划和使用更高效的文件格式等,以提升大数据处理的效率。 总结来说,《Hive用户指南》是学习和理解Hive功能、特性和最佳实践的重要资源。通过...

    apache-hive-3.1.2.zip

    4. 可以通过Hive的临时视图、分区、分桶等特性优化查询性能。 5. 结果可以输出到屏幕,也可以保存回HDFS或其他地方。 总的来说,Apache Hive-3.1.2作为一个强大的大数据处理工具,为数据分析师和数据科学家提供了...

    Hive大数据仓库-笔记整理 (一)2020年最新版.pdf

    6. **Hive性能优化**:Hive可以通过多种方式优化查询性能,比如使用分区过滤减少数据扫描量,使用物化视图预计算常用查询,或者通过设置合适的执行引擎(如Tez或Spark)来提高效率。 7. **Hive与HBase的对比**:...

    Hive编程指南-by-_美_Edward-Capriolo Dean-Wampler Jason-Rutherglen-著-_

    此外,Cascading和Crunch等框架也常与Hive一起使用,它们提供了更高级别的抽象,简化了MapReduce编程。 在Hive的基础操作部分,书中涵盖了安装、配置和使用Hive的全过程,包括Java环境的设置、Hadoop的安装(涉及...

    hive开发指南 -1.0.pdf

    Hive是一种建立在Hadoop之上的数据仓库基础架构,用于存储、查询和分析存储在Hadoop文件系统(HDFS)中的大规模数据。Hive定义了一种类SQL查询语言(即Hive QL),让熟悉SQL的用户能够以简单的方式查询Hadoop中的数据...

    HIVE-SQL开发规范.docx

    Hive作为Hadoop生态系统中的重要组件,为企业提供了对大规模数据集的高效处理和分析能力。它允许用户通过类似于SQL的查询语言(HiveQL)来操作分布式存储的数据,简化了MapReduce编程模型。本规范旨在指导开发者遵循...

    hive cdh5.11 tar包

    3. **数据分桶和分区**:为了提高查询性能,Hive支持数据分桶和分区。分桶是将数据集按照某个字段的值分成若干个桶,而分区是将大表按照一个或多个列的值划分成不同的子目录,便于查询优化。 4. **延迟物化视图...

Global site tag (gtag.js) - Google Analytics