Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

实时数据每隔一段时间,就要把历史数据放在数据仓库里,防止数据越来越大,导致查询越来越慢。数据仓库主要用于数据分析,可以按照主题进行存放,比如订单仓库,可以用来存放历史订单表、订单详情表、支付信息表等,不必考虑空间的问题。

hive是做离线数据分析,没有更新功能,不是用来做数据库的,不适合一条一条数据的插入,直接来读数据而不会去改数据。

Hive的安装与配置_hive

Hive的安装与配置_数据_02

一、为什么用Hive

直接使用hadoop所面临的问题

人员学习成本太高 ;

项目周期要求太短 ;

MapReduce实现复杂查询逻辑开发难度太大;

为什么要使用Hive

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

避免了去写MapReduce, 减少开发人员的学习成本;

扩展功能很方便。

二、Hive与传统数据库对比

Hive的安装与配置_hive_03

总结:hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析,hive的sql不支持递归算法,也不擅长数据挖掘。

三、Hive安装

1、上传压缩包并解压到某一台机器上

2、修改配置文件

vi hive-site.xml

<configuration>
<!--配置hive的元数据信息到mysql中-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
<description>password to use against metastore database</description>
</property>
</configuration>

3、将mysql的驱动包放到 lib下

4、解决jline-2.12.jar冲突

删除/home/hadoop-2.6.4/share/hadoop/yarn/lib  下的jline-0.9.94.jar

将hive下的jline-2.12.jar包拷贝到/home/hadoop-2.6.4/share/hadoop/yarn/lib下

cp jline-2.12.jar /home/hadoop-2.6.4/share/hadoop/yarn/lib

5、启动hive

方式一:本地启动

bin/hive    hive

方式二: 远程连接

先在hadooop01上, ./home//hive/bin/hiveserver2

hiveserver2  &

启动成功后可以打开

http:// hadoop01:10002

在另一个打开的hadoop01上,./home//hive/bin/beeline

!connect jdbc:hive2://localhost:10000

备注:若是报code 2,内存不足,可以配置HDP客户端内存

jps  -v |  grep "native  -Xmx"     --查询内存
vi  hadoop-env.sh

export HADOOP_CLIENT_OPTS="-Xmx1g $HADOOP_CLIENT_OPTS"

6、创建数据库

create database shizhan03;

Hive的安装与配置_大数据_04

7、强制删除数据库

drop table shizhan03  cascade;

四、 内部表&外部表

Hive 中包含以下数据模型:DB、table、external Table,partition、bucket。

内部表(table)和外部表(external Table) 区别:

1、外部表数据存放位置可以在任意指定路径,一般建表时使用location指定位置;内部表一般存放在user/hive/warehouse/下

2、删表后,外部表的元数据不在,数据还在;内部表的元数据和表目录都不在

3、对接外部数据的系统,用外部表;到数据仓库里,建立宽表,使用内部表

五、JDBC连接Hive

1、添加jar包

2、注册驱动

3、获取连接对象

4、获取执行sql语句的对象

5、执行sql数据,返回结果集

6、封装结果数据

7、释放资源

例如:

备注:一定要启动hiveServer2服务

更多java、大数据学习面试资料,请扫码关注我的公众号:

Hive的安装与配置_hive_05