Hive

作者: 终生学习丶 | 来源:发表于2017-10-05 16:55 被阅读61次

Hive和数据库

Hive有自己的语言,叫HQL(近似于SQL),Hive是基于Hadoop的一个数据仓库,不是数据库.

1. 像mysql,oracle之类的数据库,他们更关注业务交易处理(OLTP),追求交易的速度,交易完整性,数据的一致性等。

2. 数据仓库更关注数据分析层面(OLAP),强调数据分析的效率,复杂查询的速度,数据之间的相关性分析,所以使用的多维模型,从而提高数据分析的效率。

3. Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的。而数据库则可以将数据保存在块设备或者本地文件系统中。

4. Hive必须要依赖一个数据库,因为Hive要做一个元数据到原来的映射,每一个原本的数据都需要存到数据库的,假如相对于的数据库被删了,那Hive就没了映射的源头了,就没法用


Hive的优点

1. 操作接口采用类SQL语法,提供快速开发的能力。

2. 避免了去写MapReduce,减少开发人员的效率和心灵上的创伤

3. Hive的执行延迟比较高,因此hive常用于数据分析,对实时性要求不高的场合

4. Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高

5. Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

Hive的缺点

1. 完全不会MR的话,无法处理性能的优化

2. MR太慢,太笨重...

3. Spark Core强于MR100倍...Spark SQL底层走的Spark Core,它可以对接Hive...

4. 不适合关系型处理,不适合实时查询和行情分析,延迟比较高

Hive的架构

Hive架构

Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。

1. 用户接口:Client            2. 元数据:Metastore            3.  驱动器:Driver


Hive解决了什么问题

Hive解决了大数据的查询功能,让不会写MR的人也能使用MR,它的本质就是将HQL转换为MR. 它的底层走的是MR,写MR效率低,而且痛苦,Hive的出现就为JAVAEE的兄弟带来了捷径和福音.


Hive环境搭建

Hive是MapReduce的客户端,因此不需要在每个节点上都配置。在操作Hive的同时,需要将Hadoop的HDFS开启,Yarn开启,MapReduce配置好。

1. hive官网下载hive后,将hive解压后,进入hive,将hive-env.sh.*修改为hive-env.sh.

2. 编辑hive-env.sh, 在里面找到JAVA-HOME,并配置安装在集群上java.home的路径

3. 找到export HIVE_CONF_DIR,在其后面配置hive下面的conf的路径

4. 在HDFS上创建/tmp和user/hive/warehouse两个目录,并改变他们的组的权限

5. 如果你想远程提供元数据表的服务,就在hive-site.xm配置hive.metastore属性


Hive的基本操作

注: 要操作Hive的话,要启动HDFS和Yarn

启动hive1: bin/hive

启动hive2: 如果在hive-site.xml里配置了hive.metastore,那启动:bin/hive --service metastore       再bin/hive

查看数据库: show databases;       切换数据库: use 数据库名       显示数据库中的表: show tables;  

创建表: create table employee(id int, name string);        查看表的结构: desc employee

向表中插入数据: insert into student values(1000,"ss");        查询表中数据: select * from student;

将本地文件导入hive: load data local inpath '/opt/module/datas/student.txt' into table employee;


MySQL的安装

hive为什么要依赖某一个数据库: 因为hive要做一个原本的数据到字段的映射,并且每一个原本的数据它所存储的信息和序列都要保存到数据库中进行说明,而原数据保存在mysql的数据库中,叫做metastore,一旦metastore被删掉了,hive仓库就没有数据了.

mysql在linux上要安装三个:客户端,服务器,还有一个连接的

前面两个默认安装好了...

1. 我安装的是这个版本mysql-connector-java-5.1.27  cd进入里面

2. 将里面默认提供的唯一的jar包cp到hive的lib目录下.

3. 启动hive,就可以创建表了,且数据映射到mysql里面了

4. mysql -uroot -p密码, 查看数据库,就可以看到metastore数据库了,如果不小心drop了,hive就没有数据了...GG


Hive之数据导入

基本加载数据

加载本地文件到hive: load data local inpath '/opt/module/datas/student.txt' into table default.student;

加载HDFS文件到hive中: dfs -put /opt/module/datas/student.txt /user/admin/hive;

通过查询语句向表中插入数据

插入数据: insert into table  student partition(month='123') values('1004','wangwu');

用location指定加载数据路径

上传数据到hdfs上: dfs -put /opt/module/datas/student.txt  /user/hive/warehouse/student5;

import数据到指定hive表中: import table student2 partition(month='201709') from '/user/hive/warehouse/export/student';


Hive之数据导出

insert导出到本地: insert overwrite local directory '/opt/module/datas/export/student' select * from student;

将查询的结果格式化导出到本地: insert overwrite local directory '/opt/module/datas/export/student1' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY '\n' select * from student;

将查询的结果导出到HDFS上(没有local): insert overwrite directory '/user/admin/hive/warehouse/student2'ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY '\n'select * from student;

Hadoop命令导出到本地: dfs -get /user/hive/warehouse/student/month=201709/000000_0  /opt/module/datas/export/student3.txt;

hive shell 命令导出: bin/hive -e 'select * from default.student;' > /opt/module/datas/export/student4.txt;

export导出到HDFS上: export table default.student to '/user/hive/warehouse/export/student';

待续..

相关文章

  • 数据仓库Hive

    Hive产生背景 Hive概述 HIve体系架构 Hive部署架构 Hive和RDBMS区别 Hive部署以及快速...

  • 数据查询-Hive基础

    outline 什么是Hive 为什么需要Hive Hive的架构 Hive的常用操作 什么是Hive Hive由...

  • 大数据知识 | hive初识

    hive简介 hive架构 hive是什么 官网这样说:https://hive.apache.org/ hive...

  • Hive | Hive 安装详解

    一、Hive 介绍 二、准备工作 三、Hive下载 四、Hive 安装 五、Hive 启动 一、Hive 介绍 H...

  • Hive日常使用

    hive 创建表: hive 执行: =========================hive 调用Python...

  • Hive常用的几种交互操作

    查看hive下的交互命令方式 -help(hive 外) 命令:bin/hive -helpusage: hive...

  • 【Hive】

    Hive的安装 Hive官网地址 http://hive.apache.org/[http://hive.apac...

  • Hive进阶

    hive配置,命令 hive查询显示列名 hive默认分隔符 \001 hive命令行中查看当前hive环境变量 ...

  • Hive 入门

    Hive官网 Hive概述 Hive 的底层执行引擎有 :MapReduce,Tez,Spark- Hive on...

  • 大数据开发之Hive优化篇2-Hive的explain命令

    备注:Hive 版本 2.1.1 一.Hive explain命令概述 Hive的explain命令用来看Hive...

网友评论

    本文标题:Hive

    本文链接:https://www.haomeiwen.com/subject/lfncsxtx.html