10_hadoop之hive

10_hadoop之hive

什么是Hive

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

10_hadoop之hive

Hive的特点

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

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

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

Hive与Hadoop的关系

10_hadoop之hive

hive环境搭建:

由于hive是基于Hadoop的。所以首先要保证你的hadoop环境是能够更正常运行的。对于haddop环境的搭建,请参照之前的文章。

1.hive的下载:http://mirror.bit.edu.cn/apache/hive/

10_hadoop之hive

2.上传


3.解压 tar -zxvf apache-hive-2.3.2-bin.tar /usr/local/hive

4.配置

① 配置环境变量

export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HIVE_HOME/bin

10_hadoop之hive

② 重新加载环境变量配置
source /etc/profile

③ 验证环境变量配置是否确 echo  $HIVE_HOME
10_hadoop之hive
④ 执行hive命令,验证hive运行是否正常,hive需要运行在hadoop上,所以在运行之前,请先启动你的hadoop
10_hadoop之hive

如果有相应的输出,则hive基本环境正常。

④ hive常用配置
 1 cd /usr/local/hive/conf
 2 cp hive-default.xml.template hive-site.xml
 3 修改  hive.metastore.schema.verification 设定为false

 <property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
    <description>
      Enforce metastore schema version consistency.
      True: Verify that version information stored in is compatible with one from Hive jars.  Also disable automatic
            schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures
            proper metastore schema migration. (Default)
      False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
    </description>

 4 创建/usr/local/hive/temp目录,替换${system:java.io.tmpdir}为该目录

 在hive的安装目录下创建一个tmp临时目录

mkdir tmp

10_hadoop之hive


5 替换${system:usr.name} 为root
6 schematool -initSchema -dbType derby 格式化hive内嵌derby数据库
会在当前目录下建立metastore_db数据库

注意:每次执行hive时应该还在同一目录,hive会默认到当前目录下寻找metostore,如果没有就会创建一个新的。那么之前的数据就不能正常使用了
遇到问题,将metastore_db删掉,重新执行命执行命令,实际工作中,经常使用mysql作为metastore的数据库存储

7、启动hive
10_hadoop之hive

8、观察hadoop fs -ls /tmp/hive中目录的创建

9、1 show databases;10_hadoop之hive
2 use default;10_hadoop之hive
10_hadoop之hive
3 create table wordcount(line string);
10_hadoop之hive
4 show tables;
10_hadoop之hive
5 des wordcount;

6 select * from wordcount;
7 drop table doc;
10、观察hadoop fs -ls /user
11、启动yarn

12、使用hive完成wordcount程序的功能:

1 load data inpath ‘/input’ overwrite into table wordcount #将hdfs将根目录下的input目录下的文件中的输入载入到wordcount表中。
10_hadoop之hive
2 select * from wordcount;#查询表中的数据
10_hadoop之hive
3 select split(line,’ ‘)from wordcount;#将数据库中的数据line字段按照空格进行分割
10_hadoop之hive
4 select explode(split(line,’ ‘))from wordcount;#将上边获取到的每一行中的数组数据中的每个单词单独读取作为一行输出
10_hadoop之hive

select explode(split(line,' '))from wordcount;
 为表添加一个新的列,使用上边的查询结果进行填充10_hadoop之hive
5  select word,count(1) as count from (select explode(split(line,’ ‘))as word from wordcount) w group by word;
执行过程
10_hadoop之hive
执行结果:
10_hadoop之hive
13 使用sougou搜索目录做实验 数据文件链接:https://pan.baidu.com/s/1dSqYuy 密码:bvtu
1将日志文件上传到hdfs系统,启动hive

2 根据搜狗日志文件 创建数据表

create table sqr(qtime string,qid string,qword string,a string, url string) row format delimited fields terminated by ',';

10_hadoop之hive

 3 查看表结构

desc sqr; 

10_hadoop之hive

4 载入数据

load data inpath '/sogou.dic' into table sqr;

10_hadoop之hive

5 计算统计结果
create table sql_result as select keyword,count(1) as count from (select qword as keyword from sqr) t group by keyword order by count desc;

6 查询统计结果

10_hadoop之hive



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111285.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号