Hadoop最常用的工具(SQL on Hadoop):Hive
来源:互联网 发布:adobe muse mac 破解 编辑:程序博客网 时间:2024/04/29 16:10
认识Hive
对十Hadoop的出现,无论是业界还是学术界对其都给予了极高的关注度,Hadoop及其生态圈提供了一个成熟高效的处理海量数据集的解决方案。随着Hadoop越来越流行,一个问题也随之产生:用户如何从现有的数据基础架构转移到Hadoop上,而所谓的数据基础架构大都基于传统关系型数据库(RMDBS )和结构化查询语言(SQL )。这就是Hive出现的原因,Hive的设训目的是为了让那些精通SQL技能而Java技能较弱的数据分析师能够利用Hadoop进行各种数据分析,对于前文的WordCount例子,Java代码大概在80行左右,这对于经验丰富的Java开发工程师来说也不是易事,但如果用Hive的查询语言(即HiveQL)来完成的话,只有区区几行代码:
CREATE TABLE text (line STRING);LOAD DATA INPATH’a.txt’OVERWRITE INTO TABLE text;CREATE TABLE word_count AS SELECT word,COUNT(1) AS count FROM(SELECT EXPLODE (SPLIT(line,’\s’)))AS word FROM text) wGROUP BY wordORDER BY word;
可以看出HiveQL的语法和SQL常类似,实际上HiveQL是基本实现了SQL-92标准的。
Hive是由Facebook开发的海量数据查询工具,目前己经捐献给Apache软件基金会,是Apache的顶级项目。
在实际开发中,80%的操作都不会由MapReduce程序直接完成,而是由Hive来完成,所以说Hive本身实践性非常强,并,1.使用频率}I常高,它没有高深的原理,只需要用户对SQL熟练即可。掌握Hive对于使用Hadoop来说非常重要。
从MapReduce到SQL
Hive显著地降低了使用Hadoop来做数据分析的学习成本,对于那些精通Java的人来说,Hive仍然是首选,因为Hive稳定,代码精简并且易于维护。
从前面介绍的MapReduce编程实例可以看出,常见的count, group by, order by, join等SQL操作都可以由MapReduce来完成,在某种意义上,Hive可以说是HiveQL ( SQL)到MapReduce的映射器,如下图所示。
Hive可以将用户输入的HiveQL脚本转化为一个或多个MapReduce作业并在集群上运行。同样的,Hadoop生态圈里还有一个叫Pig的组件,它的作用和Hive类似,但Pig提供的不是SQL接口而是一种叫做Pig Latin的语言接口,如下图所示。
和SQL相比,Pig Latin更加灵活但是学习成本更高,在生产环境下没有Hive普遍。Pig Latin和HiveQL都是对MapReduce进行了一种封装,使用户不必直接编写MapReduce程序,所以它们可以说是Hadoop的“高级语言”。
可以在Hive安装的节点输入hive进入Hive命令行:
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201407010908_503992358.txt hive>
可以对己有的表进行查询操作:
hive> select count(*)from test;
这时控制台会输出日志:
Total MapReduce jobs=1Launching Job 1 out of 1Number of reduce tasks determined atcompile time:1In order to change the average load for a reducer (in bytes): set hive .exec.reducers.bytes.per.reducer=<number> In orderto limit the maximum number of reducers: set hive.exec.reducers.max=<number> In order to set a constant number of reducers: set mapred.reduce.tasks=<number> Starting Job=job-201407010902_0002,Tracking ORL=http://master:50030/jobdetails.jsp?jobid=job-201907010902_0002 Kill Command=/home/hadoop/hadoop-0.20.2一cdh3u6/bin/hadoop job一Dmapred.job.tracker=master:9001-kill job_201407010902_0002 2019一07一01 09:11:91,334 Stage-1 map=0%, reduce = 0%. 2019一07一01 09:11:97,370 Stage-1 map=0%, reduce=100%. 2014一07一01 09:11:50,397 Stage一1 map=100%, reduce=100% Ended Job=job_ 201907010902_ 0002 OK 0 Time taken:14 .889 seconds
从日志可以发现该条HiveQL(以下简称HQL)被转化为一个MapReduce作业执行,执行时与普通MapReduce作业一样,也是分为map和reduce部分,还可以通过Hadoop的Web UI查看作业,日志已经将作业链接打印出来:
通过链接可以看到该作业的详细信息,如图所示。
值得一提的是,并不是所有HQL 都会转化为MapReduce任务,例如下面这种查询操作。
hive> select*from test:
这种HQL是不会被Hive转化为MapReduce作业执行的,Hive只会将该表所分布在各个,DataNode的数据拉到Hive所在节点并依次输出。
本文参考书籍------Hadoop海量数据处理 技术详解与项目实战
- Hadoop最常用的工具(SQL on Hadoop):Hive
- Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.1 Hive 介绍)(草稿)
- Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.3 Hive 快速入门)
- Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.7 HQL:数据查询)(草稿)
- Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.8 HQL:排序)(草稿)
- Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.2 Hive安装与配置)(草稿)
- Hadoop工具安装--Hive
- hadoop hive sql
- hadoop Hive sql 总结
- Hadoop Hive sql操作
- hadoop&hive常用的命令-备忘
- Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.4 数据类型和存储格式)(草稿)
- Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.5 HQL:DDL数据定义)(草稿)
- Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.6 HQL:DML数据操纵)(草稿)
- hadoop的hive sql语句总结
- hadoop的hive sql语句总结
- hadoop hive sql语法解释(转)
- hadoop hive sql(HQL)语法解释
- 用递归获取多级菜单
- 暴力破解 Burp Suite
- 1. spring概述
- android 应用开发屏幕自适应问题
- webView图片自适应屏幕
- Hadoop最常用的工具(SQL on Hadoop):Hive
- React Native基于最新版本实现JsBundle预加载,解决白屏等待,界面秒开优化
- TinkerPatchException:loader classes in old primary dex are mismatched to those in new primary dex
- 2017年大数据可视化机遇,这5大行业不容错过
- fork()函数
- Spark性能优化总结
- 使用 Sahi 实现 Web 自动化测试
- 老司机带你get海量网页请求数据
- EF批量操作数据之EntityFramework.Extended