Hive功能介绍

Hive功能介绍

hive是Apache的顶级项目,

http://hive.apache.org/

hive是干什么

将SQL语句转换成MapReduce程序,并且提交到Yarn上运行,读取HDFS上的数据进行处理。

SQL语句:和MySQL数据库中SQL语句非常非常类似。

 

概念:SQL on Hadoop

建立在Hadoop之上提供SQL方式分析的框架

- 最早的框架就是 Hive

facebook开源

- impala

- presto

- sparkSQL/shark

-kylin

要学好hive,需要什么

Hadoop基础:HDFS、MapReduce、Yarn

MySQL数据库

DML(数据操作语言)、DDL(数据定义语言)

https://cwiki.apache.org/confluence/display/Hive/Home#Home-UserDocumentation

Hive功能介绍_第1张图片

案例:统计单词出现频率。

Hive功能介绍_第2张图片

使用mysql完成:

sql语句:

SELECT
    word,count(word) count
FROM
    tb_word
GROUP BY
    word 

Hive功能介绍_第3张图片

与此相比,使用mapreduce就需要写很长的代码。

 

安装Hive

上传、解压、重命名

tar -zxvf apache-hive-1.2.1-bin.tar.gz -C ../modules/
mv apache-hive-1.2.1-bin/ hive-1.2.1-bin/

hive目录结构

Hive功能介绍_第4张图片

修改配置

hive-env.sh,将名称修改。

mv hive-env.sh.template hive-env.sh

绑定Hadoop的路径和hive conf的路径。

Hive功能介绍_第5张图片

创建数据仓库

hive 的数据需要保存到HDFS,那么保存HDFS那个目录,是不是需要配置

不配置,因为它会去读默认路径,但是这些目录是空,我需要去创建

bin/hdfs dfs -mkdir -p /user/hive/warehouse
bin/hdfs dfs -mkdir -p /tmp
bin/hdfs dfs -chmod g+w /tmp
bin/hdfs dfs -chmod g+w /user/hive/warehouse
bin/hdfs dfs -ls /user/

创建完成之后可以在hdfs的外部端口50070上看到:

Hive功能介绍_第6张图片

https://cwiki.apache.org/confluence/display/Hive/GettingStarted在apache官网上可以看到。

Hive功能介绍_第7张图片

hive的基本使用

启动hive:

bin/hive

hive和mysql语法差不多

Hive功能介绍_第8张图片

案例:

 

准备数据

直接将Mysql表中的数据复制出来

将它上传到Linux datas

Hive功能介绍_第9张图片

 

创建数据库&表

直接使用default数据表

官网语句:

Hive功能介绍_第10张图片

创建表

--Hive创建表
CREATE TABLE tb_word(
    word STRING,
    count INT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
LINES TERMINATED BY '\n';

加载数据到数据库

官网语法:

Hive功能介绍_第11张图片

--加载数据
LOAD DATA LOCAL INPATH '/opt/datas/tb_word.txt'  INTO TABLE tb_word; 

Hive功能介绍_第12张图片

测试:统计单词频率。

--测试
SELECT
    word,count(word) count
FROM
    tb_word
GROUP BY
    word 

Hive功能介绍_第13张图片

和MySQL的对比

database:数据库

将同一类表放在此空间下,以便进行管理操作。

table:表

字段:数据类型和字段名称

映射 表对应的数据文件

对应的文件数据在HDFS上

使用MySQL存储元数据

10.1交互式命令问题

现象:

bin/hive这个交互性命令行不能同时开多个,开第二个就报错了

原因

hive中无论是创建的 数据库还是表 ,这些元数据metaStore需要存储

默认情况下存储在Derby数据库里面的,属于嵌入式数据,每次仅仅支持一个会话,

 

解决:

使用支持多个会话的数据,推荐MySQL存储元素(官方推荐)

Hive功能介绍_第14张图片

配置使用MYSQL存储元素

文档: 

https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+Administration

(1)创建配置文件

touch hive-site.xml

Hive功能介绍_第15张图片





	
		javax.jdo.option.ConnectionURL
		jdbc:mysql://bigdata-hpsk01.huadian.com/metaStore?createDatabaseIfNotExist=true
	
		
		javax.jdo.option.ConnectionDriverName
		com.mysql.jdbc.Driver
	
		
		javax.jdo.option.ConnectionUserName
		root
	
		
		javax.jdo.option.ConnectionPassword
		123456
	

(3)添加mysql驱动

放到hive的conf文件夹中。

 

测试

(1)将metastore_db和derby.log删除

(2)启动bin/hive

(3)效果:

a):可以启动多个bin/hive交互性命令行

b):mysql 数据库中可以看到 那个 数据库

Hive功能介绍_第16张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Hive功能介绍)