Hive功能介绍

这篇博客介绍了Apache Hive的功能,包括它是如何将SQL语句转化为MapReduce任务在Hadoop上运行,以及Hive与MySQL的对比。文章详细讲解了安装Hive的步骤,包括配置、创建数据仓库和使用MySQL存储元数据。通过实例展示了如何使用Hive进行数据统计,同时也指出了Hive的交互式命令行问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

使用mysql完成:

sql语句:

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

与此相比,使用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-env.sh,将名称修改。

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

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

创建数据仓库

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上看到:

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

hive的基本使用

启动hive:

bin/hive

hive和mysql语法差不多

案例:

 

准备数据

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

将它上传到Linux datas

 

创建数据库&表

直接使用default数据表

官网语句:

创建表

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

加载数据到数据库

官网语法:

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

测试:统计单词频率。

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

和MySQL的对比

database:数据库

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

table:表

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

映射 表对应的数据文件

对应的文件数据在HDFS上

使用MySQL存储元数据

10.1交互式命令问题

现象:

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

原因

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

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

 

解决:

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

配置使用MYSQL存储元素

文档: 

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

(1)创建配置文件

touch hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

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

</configuration>

(3)添加mysql驱动

放到hive的conf文件夹中。

 

测试

(1)将metastore_db和derby.log删除

(2)启动bin/hive

(3)效果:

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值