• 认识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相关推荐

  1. 基于SQL on Hadoop的数据仓库技术

    http://www.uspeed.com.cn/958.html 数据仓库是企业统一的数据管理的方式,将不同的应用中的数据汇聚,然后对这些数据加工和多维度分析,并最终展现给用户.它帮助企业将纷繁浩杂 ...

  2. Hadoop技术(三)数据仓库工具Hive

    数据仓库工具Hive 第一章 hive是什么 一 数据仓库工具Hive 二 hive架构 三 Hive执行流程 第二章 Hive的搭建 一 Hive的搭建模式介绍 二 单用户模式搭建 三 多用户模式搭 ...

  3. 分享Hadoop处理大数据工具及优势

    现如今,随着云计算技术.物联网技术的兴起,企业需要应对的数据规模越来越大.数据格式越来越复杂.数据收集速度越来越快,也使得它和传统意义的业务数据相比,有了明显的特点.比如ApacheHadoop已成为 ...

  4. SQL on Hadoop在快手大数据平台的实践与优化 | 分享实录

    快手大数据架构工程师钟靓 本文是根据快手大数据架构工程师钟靓于 5月18-19日在A2M人工智能与机器学习创新峰会<SQL on Hadoop在快手大数据平台的实践与优化>演讲中的分享内容 ...

  5. 盘点:SQL on Hadoop中用到的主要技术

    盘点:SQL on Hadoop中用到的主要技术 转载声明: 本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容: 盘点:SQL on Hadoop中用到的主要技术 转载仅为方便学 ...

  6. 高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》...

    目录: Oracle数据完整性和锁机制  索引及优化之表分析  表分析.约束及表间关系  Oracle体系结构1 Oracle体系结构2  海量数据库及分区1  海量数据库及分区2  海量数据库及分区 ...

  7. hadoop fs常用命令

    hadoop fs -help 当执行-help命令后,可以列出所有命令帮助信息 查看某一命令的帮助信息可在-help后面跟上所要查询的命令,以cat命令为例: hadoop fs -help cat ...

  8. Hadoop HDFS常用命令

    在Linux命令行终端,我们可以利用Shell命令对Hadoop进行操作.利用这些命令可以完成HDFS中文档的上传.下载.复制.查看文件信息.格式化名称节点等操作.关于HDFS的Shell命令有一个统 ...

  9. 实验一 熟悉常用的Linux操作和Hadoop操作

    文章目录 题目 实验环境 实验内容 熟悉常用的Linux命令 安装Hadoop 安装ssh服务端 安装Java环境并设置环境变量 安装单机Hadoop hadoop伪分布式安装 出现的问题 but t ...

最新文章

  1. Debian/Ubuntu 对gpg和apt-key使用代理--报错解决:gpg: keyserver receive failed: Connection timed out
  2. 深入理解Struts2
  3. SAP Spartacus自定义Component的Not found问题
  4. Spark Run本地设计模式
  5. django 与 vue 的完美结合
  6. RuoYi-Cloud 部署篇_04(windows环境 mysql+nginx版本)
  7. List、Map、Set 三个接口,存取元素时的特点
  8. linux 777权限_认识Linux之Linux命令-用户、权限管理(8)
  9. JS常用的六种设计模式详解
  10. 甲骨文提供非常良心的永久免费云主机空间
  11. Gustafson 定律
  12. 特朗普对五角大楼云计算合同表示担忧
  13. C++中如何创建一个类?
  14. R语言绘图--高级图形之Circos
  15. react xlsx 数据转换excle 插件
  16. ElasticSearch入门教程(1)
  17. win10 卸载cuda10.1
  18. Dnn中常见的一个错误及可能原因:Could not find stored procedure 'dbo.GetPortals'
  19. shell处理 [批次号][分隔符][文件名称].[后缀] 格式的文件
  20. Python continue的用法

热门文章

  1. python动态排名可视化_动态排名可视化 | 带你领略编程语言20年风云变化
  2. dedecms怎么改php版本_Linux下如何安装DedeCMS?
  3. 基于matlab的捷联惯导算法设计及仿真,基于 Matlab 的捷联惯导算法设计及仿真1doc.doc...
  4. windows下安装TensorFlow(清华镜像)
  5. 【项目实战课】基于Pytorch的3DCNN视频分类与行为识别实战
  6. C#创建Word文档
  7. 克隆 Linux系统盘,linux系统克隆系统盘
  8. HDU5977 Garden of Eden 【FMT】【树形DP】
  9. maven 打包jar lib
  10. 转 知道这20个正则表达式,能让你少写1,000行代码