- 浏览: 599619 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
Hive 是什么
Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类SQL 查询语言,称为 QL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
Hive没有专门的数据格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允许用户指定数据格式。
Hive中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。Hive中你添加了数据就无法删除的,SQL的fans们是不是很费解?
1 Hive的体系结构划分
下面是Hive的架构图:
1. 用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 WUI是通过浏览器访问Hive。
2. Hive将元数据存储在数据库中,如MySQL、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
3. 解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。
4. Hive的数据存储在HDFS中。在hive中运行“select * from example_table”时直接返回当前所有值,并不会启动mapreduce任务,而当构建一些复杂的特殊的HQL语句时,就会启动一个mapreduce任务来进行处理。
2 Hive的数据模型
对于数据存储,Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。
Hive中所有的数据都存储在HDFS中,存储结构主要包括数据库、文件、表和视图。
Hive中包含以下数据模型:Table内部表,External Table外部表,Partition分区,Bucket桶。Hive默认可以直接加载文本文件,还支持sequence file 、RCFile。
3.1 Hive数据库
类似传统数据库的DataBase,在第三方数据库里实际是一张表。简单示例命令行
3.2 内部表(一个文件只能对应一个内部表)
Hive的内部表与数据库中的Table在概念上是类似。每一个Table在Hive中都有一个相应的目录存储数据。例如一个表pvs,它在HDFS中的路径为/wh/pvs,其中wh是在hive-site.xml中由${hive.metastore.warehouse.dir} 指定的数据仓库的目录,所有的Table数据(不包括External Table)都保存在这个目录中。删除表时,元数据与数据都会被删除。
内部表简单示例:
3.3 外部表
外部表指向已经在HDFS中存在的数据,可以创建Partition。它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异。内部表的创建过程和数据加载过程这两个过程可以分别独立完成,也可以在同一个语句中完成,在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除。而外部表只有一个过程,加载数据和创建表同时完成(CREATE EXTERNAL TABLE ……LOCATION),实际数据是存储在LOCATION后面指定的 HDFS 路径中,并不会移动到数据仓库目录中。当删除一个External Table时,仅删除该链接。
外部表简单示例:
3.4 分区
Partition对应于数据库中的Partition列的密集索引,但是Hive中Partition的组织方式和数据库中的很不相同。在Hive中,表中的一个Partition对应于表下的一个目录,所有的Partition的数据都存储在对应的目录中。
例如pvs表中包含ds和city两个Partition,则对应于ds = 20090801, ctry = US 的HDFS子目录为/wh/pvs/ds=20090801/ctry=US;对应于 ds = 20090801, ctry = CA 的HDFS子目录为/wh/pvs/ds=20090801/ctry=CA。
分区表简单示例:
3.5 桶
Buckets是将表的列通过Hash算法进一步分解成不同的文件存储。它对指定列计算hash,根据hash值切分数据,目的是为了并行,每一个Bucket对应一个文件。
例如将user列分散至32个bucket,首先对user列的值计算hash,对应hash值为0的HDFS目录为/wh/pvs/ds=20090801/ctry=US/part-00000;hash值为20的HDFS目录为/wh/pvs/ds=20090801/ctry=US/part-00020。如果想应用很多的Map任务这样是不错的选择。
桶的简单示例:
3.6 Hive的视图
视图与传统数据库的视图类似。视图是只读的,它基于的基本表,如果改变,数据增加不会影响视图的呈现;如果删除,会出现问题。
如果不指定视图的列,会根据select语句后的生成。
示例:
转自:http://blog.csdn.net/lnho2015/article/details/51383717
Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类SQL 查询语言,称为 QL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
Hive没有专门的数据格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允许用户指定数据格式。
Hive中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。Hive中你添加了数据就无法删除的,SQL的fans们是不是很费解?
1 Hive的体系结构划分
下面是Hive的架构图:
1. 用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 WUI是通过浏览器访问Hive。
2. Hive将元数据存储在数据库中,如MySQL、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
3. 解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。
4. Hive的数据存储在HDFS中。在hive中运行“select * from example_table”时直接返回当前所有值,并不会启动mapreduce任务,而当构建一些复杂的特殊的HQL语句时,就会启动一个mapreduce任务来进行处理。
2 Hive的数据模型
对于数据存储,Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。
Hive中所有的数据都存储在HDFS中,存储结构主要包括数据库、文件、表和视图。
Hive中包含以下数据模型:Table内部表,External Table外部表,Partition分区,Bucket桶。Hive默认可以直接加载文本文件,还支持sequence file 、RCFile。
3.1 Hive数据库
类似传统数据库的DataBase,在第三方数据库里实际是一张表。简单示例命令行
hive > create database test_database;
3.2 内部表(一个文件只能对应一个内部表)
Hive的内部表与数据库中的Table在概念上是类似。每一个Table在Hive中都有一个相应的目录存储数据。例如一个表pvs,它在HDFS中的路径为/wh/pvs,其中wh是在hive-site.xml中由${hive.metastore.warehouse.dir} 指定的数据仓库的目录,所有的Table数据(不包括External Table)都保存在这个目录中。删除表时,元数据与数据都会被删除。
内部表简单示例:
创建数据文件:test_inner_table.txt 创建表:create table test_inner_table (key string) 加载数据:LOAD DATA LOCAL INPATH 'filepath' INTO TABLE test_inner_table 查看数据:select * from test_inner_table; select count(*) from test_inner_table; 删除表:drop table test_inner_table
3.3 外部表
外部表指向已经在HDFS中存在的数据,可以创建Partition。它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异。内部表的创建过程和数据加载过程这两个过程可以分别独立完成,也可以在同一个语句中完成,在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除。而外部表只有一个过程,加载数据和创建表同时完成(CREATE EXTERNAL TABLE ……LOCATION),实际数据是存储在LOCATION后面指定的 HDFS 路径中,并不会移动到数据仓库目录中。当删除一个External Table时,仅删除该链接。
外部表简单示例:
创建数据文件:test_external_table.txt 创建表:create external table test_external_table (key string) 加载数据:LOAD DATA INPATH 'filepath' INTO TABLE test_inner_table 查看数据:select * from test_external_table; select count(*) from test_external_table 删除表:drop table test_external_table
3.4 分区
Partition对应于数据库中的Partition列的密集索引,但是Hive中Partition的组织方式和数据库中的很不相同。在Hive中,表中的一个Partition对应于表下的一个目录,所有的Partition的数据都存储在对应的目录中。
例如pvs表中包含ds和city两个Partition,则对应于ds = 20090801, ctry = US 的HDFS子目录为/wh/pvs/ds=20090801/ctry=US;对应于 ds = 20090801, ctry = CA 的HDFS子目录为/wh/pvs/ds=20090801/ctry=CA。
分区表简单示例:
创建数据文件:test_partition_table.txt 创建表:create table test_partition_table (key string) partitioned by (dt string) 加载数据:LOAD DATA INPATH 'filepath' INTO TABLE test_partition_table partition (dt='2006') 查看数据:select * from test_partition_table; select count(*) from test_partition_table 删除表:drop table test_partition_table
3.5 桶
Buckets是将表的列通过Hash算法进一步分解成不同的文件存储。它对指定列计算hash,根据hash值切分数据,目的是为了并行,每一个Bucket对应一个文件。
例如将user列分散至32个bucket,首先对user列的值计算hash,对应hash值为0的HDFS目录为/wh/pvs/ds=20090801/ctry=US/part-00000;hash值为20的HDFS目录为/wh/pvs/ds=20090801/ctry=US/part-00020。如果想应用很多的Map任务这样是不错的选择。
桶的简单示例:
创建数据文件:test_bucket_table.txt 创建表:create table test_bucket_table (key string) clustered by (key) into 20 buckets 加载数据:LOAD DATA INPATH 'filepath' INTO TABLE test_bucket_table 查看数据:select * from test_bucket_table; set hive.enforce.bucketing = true;
3.6 Hive的视图
视图与传统数据库的视图类似。视图是只读的,它基于的基本表,如果改变,数据增加不会影响视图的呈现;如果删除,会出现问题。
如果不指定视图的列,会根据select语句后的生成。
示例:
create view test_view as select * from test
转自:http://blog.csdn.net/lnho2015/article/details/51383717
发表评论
文章已被作者锁定,不允许评论。
-
Hadoop namenode的fsimage与editlog详解
2017-05-19 10:04 1188Namenode主要维护两个文件,一个是fsimage,一个是 ... -
Hadoop HBase建表时预分区(region)的方法学习
2017-05-15 11:18 1194如果知道Hbase数据表的key的分布情况,就可以在建表的时候 ... -
Hadoop HBase行健(rowkey)设计原则学习
2017-05-15 10:34 1127Hbase是三维有序存储的,通过rowkey(行键),colu ... -
Hadoop HBase中split原理学习
2017-05-12 13:38 2281在Hbase中split是一个很重 ... -
Hadoop HBase中Compaction原理学习
2017-05-12 10:34 999HBase Compaction策略 RegionServer ... -
Hadoop HBase性能优化学习
2017-05-12 09:15 687一、调整参数 入门级的调优可以从调整参数开始。投入小,回报快 ... -
Hadoop 分布式文件系统学习
2017-05-10 15:34 507一. 分布式文件系统 分布式文件系统,在整个分布式系统体系中处 ... -
Hadoop MapReduce处理wordcount代码分析
2017-04-28 14:25 595package org.apache.hadoop.exa ... -
Hadoop YARN完全分布式配置学习
2017-04-26 10:27 578版本及配置简介 Java: J ... -
Hadoop YARN各个组件和流程的学习
2017-04-24 19:04 651一、基本组成结构 * 集 ... -
Hadoop YARN(Yet Another Resource Negotiator)详细解析
2017-04-24 18:30 1161带有 MapReduce 的 Apache Had ... -
Hive 注意事项与扩展特性
2017-04-06 19:31 7521. 使用HIVE注意点 字符集 Hadoop和Hive都 ... -
Hive 元数据和QL基本操作学习整理
2017-04-06 14:36 1032Hive元数据库 Hive将元数据存储在RDBMS 中,一般常 ... -
Hive 文件压缩存储格式(STORED AS)
2017-04-06 09:35 2321Hive文件存储格式包括以下几类: 1.TEXTFILE ... -
Hive SQL自带函数总结
2017-04-05 19:25 1143字符串长度函数:length ... -
Hive 连接查询操作(不支持IN查询)
2017-04-05 19:16 729CREATE EXTERNAL TABLE IF NOT ... -
Hive优化学习(join ,group by,in)
2017-04-05 18:48 1818一、join优化 Join ... -
Hive 基础知识学习(语法)
2017-04-05 15:51 904一.Hive 简介 Hive是基于 Hadoop 分布式文件 ... -
Hadoop MapReduce操作Hbase范例学习(TableMapReduceUtil)
2017-03-24 15:37 1217Hbase里的数据量一般都 ... -
Hadoop MapReduce将HDFS文本数据导入HBase
2017-03-24 11:13 1222HBase本身提供了很多种数据导入的方式,通常有两种常用方式: ...
相关推荐
5. **Hive架构**:Hive由多个组件组成,包括元数据存储(通常是MySQL或Derby)、Hive服务器、Hive客户端和执行引擎。元数据存储了表和分区的定义,Hive服务器处理客户端请求,执行引擎则将HiveQL转换为MapReduce任务...
【大数据技术之 Hive 学习文档】 Hive 是一个基于 Hadoop 的数据仓库工具,它允许用户使用类似...通过理解和掌握 Hive 的基本概念、优缺点、架构以及与数据库的区别,用户可以更好地运用 Hive 解决实际的大数据问题。
1. **Hive架构**:Hive是一个基于Hadoop的数据仓库工具,它能够将结构化的数据文件映射为一张数据库表,并提供SQL(HQL)查询功能,简化了对大规模数据集的分析。Hive的主要组件包括客户端、元数据服务器、...
学习Hive,不仅要理解它的基本概念和架构,还要熟悉其工作原理,掌握数据类型的使用,以及如何在实际项目中应用Hive来构建数据仓库。通过深入学习,我们可以利用Hive实现高效的数据分析,从而在大数据环境中挖掘出有...
hive语法和常用函数 Kafka安装 kylin安装 mapreduce调优指南 sqoop安装 二、架构篇 Flink-1.11 Hive集成与批流一体 ClickHouse在苏宁用户画像场景的实践 优酷大数据 OLAP 技术选型 阿里数据湖选型 各种系统架构图与...
Hive的主要功能定位在于在线分析处理(OLAP),适合执行批量查询和分析任务,而非在线事务处理(OLTP)。这意味着Hive不适用于实时查询或行级别的更新操作,这些场景更适合传统的关系型数据库。Hive最初由Facebook在...
《大数据技术原理与操作应用》第7章的习题涉及到Hive的基本概念、数据类型、操作以及数据仓库的相关知识。以下是这些知识点的详细解释: 1. Hive 的数据类型: - `decimal(x,y)` 与 `FLOAT` 和 `DOUBLE` 的区别...
Hive与MySQL的一个显著区别在于,MySQL适用于在线事务处理(OLTP),而Hive则更适合在线分析处理(OLAP)。 MySQL与Hive在实际应用中常常结合使用。例如,企业可以将实时交易数据存储在MySQL中,进行日常运营,然后定期...
《DataGrip工具:连接Hive与ClickHouse的大数据利器》 在当今信息化时代,大数据已经成为企业决策的重要依据。为了高效地管理和分析这些海量数据,专业且强大的工具必不可少。DataGrip作为一款由JetBrains公司推出...
Hive的架构通常包括Hive Metastore、HiveServer、驱动程序(CLI、BI、ETL工具、IDEs、ODBC/JDBC)、以及HDFS和Map/Reduce作业。HiveQL是Hive用来查询数据的SQL方言,其背后是将SQL语句转换为MapReduce任务的编译器。...
3. Hive:Impala可以与Hive共享元数据,简化数据管理和查询。 4. Datanode:在HDFS中存储数据,Impala可以直接访问。 5. Impalad:Impala的主要工作节点,执行查询和计算任务。 6. SQL支持:Impala支持SQL语法,方便...
1. **SQL接口**:提供与传统RDBMS类似的SQL语法,简化开发和维护。 2. **分布式一致性**:采用强一致性模型(如Google的Spanner中的TrueTime),确保跨节点的数据一致性。 3. **透明扩展**:允许应用程序在不感知...
它的主要目标是提供低延迟查询,支持在线分析处理(OLAP)工作负载,同时可以与多种数据源进行交互,包括Hadoop Hive。在"presto-example-http-0.70.zip"这个压缩包中,我们看到的是Presto的一个例子,它使用HTTP...
平台完美兼容Hive语法,用户可以无缝迁移。通过OneSQL,统一了后台多个引擎,如Hive、Impala和Kudu,实现了深度优化,以提供高效的数据查询服务。 实时数仓建设中,面对多维分析和实时报表的需求,BIGO引入了Druid...
- **Hive数仓开发的基本流程** - 创建外部表或托管表; - 加载数据到表中; - 使用HQL进行查询; - 导出查询结果。 - **HiveSQL知识点** - 数据类型; - 表的创建与管理; - 数据导入与导出; - SQL查询语法...
首先,书中详细介绍了Apache Kylin的基本概念和架构。Kylin由三部分组成:构建引擎、查询引擎和REST服务。构建引擎负责创建和优化OLAP立方体,查询引擎则用于处理SQL查询并返回结果,REST服务作为用户接口,允许用户...
在这种架构下,MPP数据库用于在线分析处理(OLAP)和事务处理(OLTP),而Hadoop和Spark则用于批处理和数据挖掘。这种分离式设计允许数据独立存储,但需要集群间的数据同步,增加了系统的复杂性。 其次,方案二尝试...
- **学习目标**:理解数据仓库的基本概念、架构及应用场景。 - **学习途径**:阅读专业书籍,如《构建数据仓库》。 **3.2 数据治理体系** - **学习目标**:掌握数据质量管理、元数据管理等核心内容。 - **学习途径...