Hadoop最常用的工具(SQL on Hadoop):Hive
认识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) w
GROUP BY word
ORDER 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=1
Launching Job 1 out of 1
Number of reduce tasks determined atcompile time:1
In 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_0002Kill Command=/home/hadoop/hadoop-0.20.2一cdh3u6/bin/hadoop job一Dmapred.job.tracker=master:9001-kill job_201407010902_00022019一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_ 0002OK0Time 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海量数据处理 技术详解与项目实战
转载于:https://www.cnblogs.com/DeepRunning/p/9205984.html
Hadoop最常用的工具(SQL on Hadoop):Hive相关推荐
- 基于SQL on Hadoop的数据仓库技术
http://www.uspeed.com.cn/958.html 数据仓库是企业统一的数据管理的方式,将不同的应用中的数据汇聚,然后对这些数据加工和多维度分析,并最终展现给用户.它帮助企业将纷繁浩杂 ...
- Hadoop技术(三)数据仓库工具Hive
数据仓库工具Hive 第一章 hive是什么 一 数据仓库工具Hive 二 hive架构 三 Hive执行流程 第二章 Hive的搭建 一 Hive的搭建模式介绍 二 单用户模式搭建 三 多用户模式搭 ...
- 分享Hadoop处理大数据工具及优势
现如今,随着云计算技术.物联网技术的兴起,企业需要应对的数据规模越来越大.数据格式越来越复杂.数据收集速度越来越快,也使得它和传统意义的业务数据相比,有了明显的特点.比如ApacheHadoop已成为 ...
- SQL on Hadoop在快手大数据平台的实践与优化 | 分享实录
快手大数据架构工程师钟靓 本文是根据快手大数据架构工程师钟靓于 5月18-19日在A2M人工智能与机器学习创新峰会<SQL on Hadoop在快手大数据平台的实践与优化>演讲中的分享内容 ...
- 盘点:SQL on Hadoop中用到的主要技术
盘点:SQL on Hadoop中用到的主要技术 转载声明: 本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容: 盘点:SQL on Hadoop中用到的主要技术 转载仅为方便学 ...
- 高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》...
目录: Oracle数据完整性和锁机制 索引及优化之表分析 表分析.约束及表间关系 Oracle体系结构1 Oracle体系结构2 海量数据库及分区1 海量数据库及分区2 海量数据库及分区 ...
- hadoop fs常用命令
hadoop fs -help 当执行-help命令后,可以列出所有命令帮助信息 查看某一命令的帮助信息可在-help后面跟上所要查询的命令,以cat命令为例: hadoop fs -help cat ...
- Hadoop HDFS常用命令
在Linux命令行终端,我们可以利用Shell命令对Hadoop进行操作.利用这些命令可以完成HDFS中文档的上传.下载.复制.查看文件信息.格式化名称节点等操作.关于HDFS的Shell命令有一个统 ...
- 实验一 熟悉常用的Linux操作和Hadoop操作
文章目录 题目 实验环境 实验内容 熟悉常用的Linux命令 安装Hadoop 安装ssh服务端 安装Java环境并设置环境变量 安装单机Hadoop hadoop伪分布式安装 出现的问题 but t ...
最新文章
- Debian/Ubuntu 对gpg和apt-key使用代理--报错解决:gpg: keyserver receive failed: Connection timed out
- 深入理解Struts2
- SAP Spartacus自定义Component的Not found问题
- Spark Run本地设计模式
- django 与 vue 的完美结合
- RuoYi-Cloud 部署篇_04(windows环境 mysql+nginx版本)
- List、Map、Set 三个接口,存取元素时的特点
- linux 777权限_认识Linux之Linux命令-用户、权限管理(8)
- JS常用的六种设计模式详解
- 甲骨文提供非常良心的永久免费云主机空间
- Gustafson 定律
- 特朗普对五角大楼云计算合同表示担忧
- C++中如何创建一个类?
- R语言绘图--高级图形之Circos
- react xlsx 数据转换excle 插件
- ElasticSearch入门教程(1)
- win10 卸载cuda10.1
- Dnn中常见的一个错误及可能原因:Could not find stored procedure 'dbo.GetPortals'
- shell处理 [批次号][分隔符][文件名称].[后缀] 格式的文件
- Python continue的用法
热门文章
- python动态排名可视化_动态排名可视化 | 带你领略编程语言20年风云变化
- dedecms怎么改php版本_Linux下如何安装DedeCMS?
- 基于matlab的捷联惯导算法设计及仿真,基于 Matlab 的捷联惯导算法设计及仿真1doc.doc...
- windows下安装TensorFlow(清华镜像)
- 【项目实战课】基于Pytorch的3DCNN视频分类与行为识别实战
- C#创建Word文档
- 克隆 Linux系统盘,linux系统克隆系统盘
- HDU5977 Garden of Eden 【FMT】【树形DP】
- maven 打包jar lib
- 转 知道这20个正则表达式,能让你少写1,000行代码