【hive】——Hive初始了解

1.没有接触,不知道这个事物是什么,所以不会产生任何问题。
2.接触了,但是不知道他是什么,反正我每天都在用。
3.有一定的了解,不够透彻。
那么hive,
1.我们对它了解多少?
2.它到底是什么?
3.hive和hadoop是什么关系?
扩展:
hbase和hive是什么关系?

Hive最初是应Facebook每天产生的海量新兴社会网络数据进行管理和机器学习的需求而产生和发展的。那么,到底什么是Hive,我们先看看Hive官网Wiki是如何介绍Hive的(https://cwiki.apache.org/confluence/display/Hive/Home):

The Apache Hive data warehouse software facilitates querying and managing large datasets residing in distributed storage. Built on top of Apache HadoopTM, it provides:
  (1)、Tools to enable easy data extract/transform/load (ETL)
  (2)、A mechanism to impose structure on a variety of data formats
  (3)、Access to files stored either directly in Apache HDFSTM or in other data storage systems such as Apache HBaseTM
  (4)、Query execution via MapReduce

上面英文的大致意思是:
Apache Hive数据仓库软件提供对存储在分布式中的大型数据集的查询和管理,它本身是建立在Apache Hadoop之上,主要提供以下功能:
(1)它提供了一系列的工具,可用来对数据进行提取/转化/加载(ETL);
(2)是一种可以存储、查询和分析存储在HDFS(或者HBase)中的大规模数据的机制;
(3)查询是通过MapReduce来完成的(并不是所有的查询都需要MapReduce来完成,比如select * from XXX就不需要;
(4)在Hive0.11对类似select a,b from XXX的查询通过配置也可以不通过MapReduce来完成

上面的意思很明白了.这里再给他提炼一下:
1.hive是一个数据仓库
2.hive基于hadoop。
总结为一句话:hive是基于hadoop的数据仓库。

那么上面”基于“如何讲,看下面

Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析和管理;
(也就是说对存储在HDFS中的数据进行分析和管理,我们不想使用手工,我们建立一个工具把,那么这个工具就可以是hive)

到此,我们已经明白hive是什么,想更深一步的了解,可查看下面内容。

那么,我们如何来分析和管理那些数据呢?
  Hive定义了一种类似SQL的查询语言,被称为HQL,对于熟悉SQL的用户可以直接利用Hive来查询数据。同时,这个语言也允许熟悉 MapReduce 开发者们开发自定义的mappers和reducers来处理内建的mappers和reducers无法完成的复杂的分析工作。Hive可以允许用户编写自己定义的函数UDF,来在查询中使用。Hive中有3种UDF:User Defined Functions(UDF)、User Defined Aggregation Functions(UDAF)、User Defined Table Generating Functions(UDTF)。

  今天,Hive已经是一个成功的Apache项目,很多组织把它用作一个通用的、可伸缩的数据处理平台。

  当然,Hive和传统的关系型数据库有很大的区别,Hive将外部的任务解析成一个MapReduce可执行计划,而启动MapReduce是一个高延迟的一件事,每次提交任务和执行任务都需要消耗很多时间,这也就决定Hive只能处理一些高延迟的应用(如果你想处理低延迟的应用,你可以去考虑一下Hbase)。同时,由于设计的目标不一样,Hive目前还不支持事务;不能对表数据进行修改(不能更新、删除、插入;只能通过文件追加数据、重新导入数据);不能对列建立索引(但是Hive支持索引的建立,但是不能提高Hive的查询速度。如果你想提高Hive的查询速度,请学习Hive的分区、桶的应用)。

同时补充一下hive与hbase的联系与区别:
共同点:
1.hbase与hive都是架构在hadoop之上的。都是用hadoop作为底层存储

区别:

2.Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBase是为了支持弥补Hadoop对实时操作的缺陷的项目 。
3.想象你在操作RMDB数据库,如果是全表扫描,就用Hive+Hadoop,如果是索引访问,就用HBase+Hadoop 。
4.Hive query就是MapReduce jobs可以从5分钟到数小时不止,HBase是非常高效的,肯定比Hive高效的多。
5.Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。
6.hive借用hadoop的MapReduce来完成一些hive中的命令的执行
7.hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。
8.hbase是列存储。
9.hdfs作为底层存储,hdfs是存放文件的系统,而Hbase负责组织文件。
10.hive需要用到hdfs存储文件,需要用到MapReduce计算框架。

时间: 2024-10-31 06:51:00

【hive】——Hive初始了解的相关文章

[Hive] - Hive参数含义详解

hive中参数分为三类,第一种system环境变量信息,是系统环境变量信息:第二种是env环境变量信息,是当前用户环境变量信息:第三种是hive参数变量信息,是由hive-site.xml文件定义的以及当前hive会话定义的环境变量信息.其中第三种hive参数变量信息中又由hadoop hdfs参数(直接是hadoop的).mapreduce参数.metastore元数据存储参数.metastore连接参数以及hive运行参数构成. Hive-0.13.1-cdh5.3.6参数变量信息详解 参数

[Hive]Hive自定义函数UDF

当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数 用户自定义函数(user defined function),针对单条记录. 编写一个UDF,需要继承UDF类,并实现evaluate()函数.在查询执行过程中,查询中对应的每个应用到这个函数的地方都会对这个类进行实例化.对于每行输入都会调用到evaluate()函数.而evaluate()函数处理的值会返回给Hive.同时用户是可以重载evaluate方法的.Hive会像Java的方法重载一样,自动选择匹配的

[Hive]Hive将一行记录拆分成多行

业务背景 hive表test_user_browse记录了用户浏览过的商品,该表的数据如下: username product John product_a,product_b,product_c,product_d Tom product_e,product_f 现在,想要将product字段拆分为多行. 实现方式 现在借助lateral view 和explode()来完成. select username, browse_product from pms.test_user_browse

[Hive]Hive多分区操作

业务背景 mobile_log记录移动日志,现在需要将其保存到hive表中,将来可以按日期,小时进行统计,为此,需要建立一张具有日期.小时的hive分区表. 业务实现 hive分区表分为单分区表和多分区表,一个表可以拥有多个分区,每个分区都以文件夹的形式单独存放在表的文件目录下,详细可以参见Hive LanguageManual DDL 建立多分区表代码 drop table if exists pms.test_mobile_log; create table pms.test_mobile_

[hive] hive 内部表和外部表

1.创建内部表 hive (test1)> create table com_inner_person(id int,name string,age int,ctime timestamp) row format delimited fields terminated by ','; OK Time taken: 0.233 seconds hive (test1)> load data local inpath '/opt/hadoop/person.data' into table com

[Hive]Hive分区表新增字段

一直没有尝试,被分区的概念吓到了,今天尝试了下,很简单 hive (default)> desc pms.test_cross_sale_path; OK col_name data_type comment path_id string visit_track_id string visit_product_id bigint visit_category_id bigint visit_brand_id bigint rcmd_track_id string rcmd_product_id

[Hive]Hive数据倾斜(大表join大表)

业务背景 用户轨迹工程的性能瓶颈一直是etract_track_info,其中耗时大户主要在于trackinfo与pm_info进行左关联的环节,trackinfo与pm_info两张表均为GB级别,左关联代码块如下: from trackinfo a left outer join pm_info b on (a.ext_field7 = b.id) 使用以上代码块需要耗时1.5小时. 优化流程 第一次优化 考虑到pm_info表的id是bigint类型,trackinfo表的ext_fiel

Hive初始

一.Hive概念 二.为什么要是用Hive 三.Hive优缺点 四.hive架构 一.Hive概念 Hive最初是应Facebook每天产生的海量新兴社会网络数据进行管理和机器学习的需求而产生和发展的,是建立在Hadoop上的数据仓库基础架构.作为Hadoopd的一个数据仓库的工具,Hive可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,Hive数据仓库软件提供对存储在分布式中的大型数据集的查询和管理,它本身是建立在Apache Hadoop之上,主要提供以下功能: 它提供

Hive Remote模式搭建

一.实验环境 1.软件版本:apache-hive-2.3.0-bin.tar.gz.mysql-community-server-5.7.19 2.mysql JDBC驱动包:mysql-connector-java-5.1.44.tar.gz 3.mysql已经安装在hadoop5上 4..主机规划 hadoop3 Remote:client hadoop4 Remote:client hadoop5 Remote:server:mysql 二.基础配置 1.解压并移动hive [[emai

Hive的安装与配置

1.因为我使用MySQL做为Hive的元数据库,所以先安装MySQL. 参考:http://www.cnblogs.com/hunttown/p/5452205.html 登录命令:mysql -h主机地址 -u用户名 -p用户密码 mysql –u root #初始登录没有密码 修改密码 格式:mysqladmin -u用户名 -p旧密码 password 新密码 mysql>mysqladmin -uroot –password 123456 注:因为开始时root没有密码,所以-p旧密码一