大数据-什么是Hive?&&Hive中ETL的实战&&HQL介绍&&数据仓库的特征&&Hive的适用场景

1、什么是Hive?


一、Hadoop开发存在的问题java

只能用java语言开发,若是是c语言或其余语言的程序员用Hadoop,存在语言门槛。程序员

须要对Hadoop底层原理,api比较了解才能作开发。sql

二、Hive概述数据库

Hive是基于Hadoop的一个数据仓库工具。能够将结构化的数据文件映射为一张表,并提供完整的sql查询功能,能够将sql语句转换为MapReduce任务进行运行。其优势是学习成本低,能够经过SQL语句快速实现MapReduce统计,没必要开发专门的MapReduce应用,十分适合数据仓库的统计分析。api

2、ETL(数据提取、转化、加载)


Hive是创建在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,能够用来进行数据提取、转化、加载(ETL Extract-Transform-Load ,这是一种能够存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类SQL 查询语言,称为 HiveQL,它容许熟悉 SQL 的用户查询数据。网络

3、Hive的HQL


HQL - Hive经过类SQL的语法,来进行分布式的计算。HQL用起来和SQL很是的相似,Hive在执行的过程当中会将HQL转换为MapReduce去执行,因此Hive实际上是基于Hadoop的一种分布式计算框架,底层仍然是MapReduce,因此它本质上仍是一种离线大数据分析工具。框架

 4、数据仓库的特征


1.数据库是面向事务的设计,数据仓库是面向主题设计的。数据库设计

          面向主题设计指的是围绕一些重要主题,如顾客、供应商、产品等主题。数据仓库关注决策者的数据建模与分析,而不是公司的平常数据操做和事务处理。所以,数据仓库一般排除对于决策无用的数据,提供特定主体的简明视图。分布式

          好比一个表拆成几个维度的子表:①小区上网能力表,②APP应用受欢迎程度表,③流量分析表工具

2.数据库通常存储在线交易数据,数据仓库存储的通常是历史数据

3.数据库设计是尽可能避免冗余,数据仓库在设计是有意引入冗余。

4.数据库是为捕获数据而设计,数据仓库是为分析数据而设计。

5.数据仓看是集成的。

          一般,构造数据仓库是将多个异构数据源,如关系数据库、通常文件和联机事务处理记录集成在一块儿的。使用数据清理和数据集成技术,确保命名约定、属性度量等的一致性

6.数据仓库是时变的,数据存储从历史的角度提供信息。即数据仓库中的关键结构都隐式或显示地包含时间元素。

7.数据仓库最大的特色是弱事务的,由于数据仓库存的是历史数据,通常都读(分析)数据场景。

总结:数据仓库充当决策支持数据模型的物理实现,并存储企业战略决策所须要的信息。支持结构化、非结构化、面向主题的查询。

5、数据库和数据仓库的区别


数据库属于OLTP系统。(Online Transaction Processing)联机事务处理系统。涵盖了企业大部分的平常操做,如购物、库存、制造、银行、工资、注册、记帐等。

数据仓库属于OLAP系统。(Online Analytical Processing)联机分析处理系统。

OLTP是面向用户的、用于程序员的事务处理以及客户的查询处理。

OLAP是面向市场的,用于知识工人(经理、主管和数据分析人员)的数据分析。

OLAP一般会集成多个异构数据源的数据,数量巨大。

OLTP系统的访问因为要保证原子性,因此有事务机制和恢复机制。

OLAP系统通常存储的是历史数据,因此大部分都是只读操做,不须要事务。

6、Hive的适用场景 


Hive 构建在基于静态批处理的Hadoop 之上,Hadoop 一般都有较高的延迟而且在做业提交和调度的时候须要大量的开销。所以,Hive 并不可以在大规模数据集上实现低延迟快速的查询,例如,Hive 在几百MB 的数据集上执行查询通常有分钟级的时间延迟。所以,Hive 并不适合那些须要低延迟的应用,例如,联机事务处理(OLTP)。Hive 查询操做过程严格遵照Hadoop MapReduce 的做业执行模型,Hive 将用户的HiveQL 语句经过解释器转换为MapReduce 做业提交到Hadoop 集群上,Hadoop 监控做业执行过程,而后返回做业执行结果给用户。Hive 并不是为联机事务处理而设计,Hive 并不提供实时的查询和基于行级的数据更新操做。Hive 的最佳使用场合是大数据集的批处理做业,例如,网络日志分析