首页 > 其他 > 详细

Hive学习笔记,你想知道的Hive

时间:2018-10-16 19:45:49      阅读:181      评论:0      收藏:0      [点我收藏+]

1、 什么是Hive(蜂巢)?

  Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。Hive是基于HDFS之上的数据仓库,也就是说Hive中的数据最终都是以文件的形式保存到HDFS,下表为其对应关系。而Hive的元信息(e.g.,表名、列名、列的类型等)主要存放在哪?Hive的官方文档中推荐使用的是MySQL数据库。

Hive

HDFS

目录

数据

文件

分区

目录

  Hive还是一个翻译器,Hive是一个数据处理引擎,也就是在上一层执行的SQL语句,会有hive的引擎(Hive Driver)转换成MapReduce的程序去操作HDFS上的数据。

技术分享图片       

2、 和传统型数据库的区别

 

Hive

RDBMS

查询语言

HQL

SQL

数据存储

HDFS

Raw Device or Local FS

执行

MapReduce

Executor

执行延迟

处理数据规模

索引

0.8版本后加入位图索引

有复杂的索引

3、 为什么使用Hive?

  a)   直接使用hadoop所面临的问题

  • 公司人员学习成本高
  • 由于项目周期要求太短
  • 如果使用MapReduce实现复杂查询逻辑开发难度太大

  b)   操作接口采用类SQL语法,提供快速开发的能力,避免了去写MapReduce,减少开发人员的学习成本,hive扩展功能很方便(自定义函数)。

4、 Hive的特性

  a)    可扩展:Hive可以自由的扩展集群的规模,一般情况下不需要重启服务

  b)    延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数

  c)    容错:良好的容错性,节点出现问题SQL仍可完成执行

5、 Hive的应用实践

  以基于CDH的Hive为例,进入目录/opt/cloudera/parcels/CDH/lib/hive/bin,输入hive命令,进入hive数据库,即可以进行相关操作了。

技术分享图片

  然而,我们会发现界面非常不友好、不直观,而hive给我们提供了一个服务端,对比感受一下效果,那么怎么利用Hive给我们提供的服务端,进行相关操作呢?请看如下步骤。

   技术分享图片                      技术分享图片

  首先,在bin目录下有一个hiveserver2,然后开启服务端./hiveserver2

  其次,再连接一下服务器进入hive的bin目录下,会发现有一个beeline,用beeline的方式进行连接./beeline

  最后,使用!connect jdbc:hive2://slaver0:10000 命令进行连接,连接成功即可进行操作数据库。

 技术分享图片

  怎么向Hive建立的表中导入数据?

  首先,我们准备一个文本数据(先简单介绍数据导入流程)

  其次,我们要创建一个Hive的表,在创建的时候跟普通的数据库表的创建方式有所不同,如下图所示。在建表时可以建立1、内部表(类似MySQL中的表,下图所示)2、为了提高查询效率可以建立分区表,具体建立方法如代码所示;3、桶表;4、外部表;5、为了简化查询也可以建立视图。

技术分享图片 

              hive> create table demo1
                  > ( no int,
                  >  name string
                  > ) partitioned by (no int)
                  > row format delimited fields terminated by \t;

  然后,进行数据的导入

  本地数据:load data local inpath ‘/root/bigdata1016‘ into table demo;
  HDFS:load data inpath ‘/HDFS的目录/bigdata1016 ‘ into table demo; 

  最后,进行查看数据是否添加成功!

技术分享图片 

6、 对表中数据的操作

  Hive相较于传统的数据库不仅具有存储数据的功能,还可以进行数据的处理。那么怎么进行数据的处理呢?

  例如对刚才的表利用HQL进行一个简单的处理,select count(1) from demo1; 得到表中有多少条记录。这样就可以使用简单的HQL语句来实现MapReduce的功能(基本可是实现绝大部分的MapReduce程序,但是对于少部分逻辑比较复杂的程序还是不行的)

 技术分享图片

Hive学习笔记,你想知道的Hive

原文:https://www.cnblogs.com/ltolstar/p/9800132.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!