最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[基础] 对比Pig、Hive和SQL,浅看大数据工具之间的差异

[复制链接]
跳转到指定楼层
楼主
发表于 2016-1-14 12:43:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
作者:Manisha Nandy Mazumder
有人说对于大数据分析来说hadoop才是炙手可热的新技术,SQL虽然久经考验但已经有些过时了。这话说得不错,但有非常多的项目都用Hadoop作为数据存储,而以SQL构建前端查询,这说明Hadoop确实需要一种高级的查询语言。为了简化Hadoop的使用,开发人员创造出了类似于SQL的Pig和Hive。而用户在进行数据分析的时候使用这些工具可以避免Java编码,但在使用之前很重要的一点是了解工具之间的区别以便在不同的用例中使用最优化的工具。
在现在的大数据时代,开发人员有不少的查询工具可供选择。虽然SQL仍然占据着绝对的统治地位,企业对于大数据的兴趣使得Apache Pig和Hive这样的开源语言获得了不少机会。工欲善其事,必先利其器,选对平台和语言对于数据的提取、处理和分析都起着至关重要的作用。现在日趋流行的一种观点是随着大数据产业的发展,对于大数据分析的使用必须得到简化。只有在处理速度和使用门槛上下功夫大数据分析才能得到更广泛的使用。
谈到大数据,Apache Pig、Apache Hive和SQL是目前比较主流的工具,三者在合适的情况下都能体现出自己的优势。Pig和Hive、Pig和SQL以及Hive和SQL之间孰优孰劣的争论永远不会有结果,因为很难有一种语言可以适用于所有的情况。通过本文,笔者希望能够为大家提供一些选择工具和语言的技巧。在此之前我们也会对三者做些简要介绍。
SQL
SQL陪伴程序员们已经几十年了,几乎已经成为了提取数据的标准方法。大数据的出现改变了数据处理和可视化的方式,但SQL对于数据存储方式的严格要求和它声明式编程的特性使得我们的注意力不能集中在提取数据上面。尽管SQL有着广泛的应用,大数据的进步对SQL的功能和性能都提出了挑战。
PIG
SQL程序员们需要这样一种编程语言:既利于SQL程序员们学习同时又有下面这两个特点:
1. 避免SQL对数据存储的要求
2. 能够轻松应对大型数据集
Pig最初是由雅虎在2006年开发的,它很好地解决了上面提到的问题,同时也提供了较好的扩展性和性能优化。Apache Pig对Multi-query的支持减少了数据检索循环的次数。Pig支持map、tuple和bag这样的复合数据类型以及常见的数据操作如筛选、排序和联合查询。这些优势让Pig在全球范围内都得到了广泛的应用。Pig简便的特点也是雅虎和Twitter使用它的原因之一。
HIVE
尽管Pig性能强劲,要使用它开发人员必须掌握SQL之外的新知识,而Hive则与SQL非常相像。尽管Hive查询语言HQL的命令有所局限,它还是取得了一定的成功。Hive为MapReduce提供了优秀的开源实现,它在分布式数据处理的同时避免了SQL对于数据存储的局限。
我们介绍的这些数据提取、处理和分析方式都不能完全适用于所有的情况。在做出选择之前我们要考虑诸如数据存储方式、编程语言架构以及期望等因素。下面我们就把Pig、Hive和SQL两两进行对比以便了解它们各自所适用的情况。
Pig vs SQL
SQL所操作的关系型数据库速度上较Pig通过PigLatin操作的MapReduce快一些,然而关系型数据库的数据加载很有挑战性所以设置比较困难。PigLatin在声明式执行计划、ETL流程和管道的修改上则有着优势。
整体上来看SQL是一门声明式语言而PigLatin属于过程式语言。在SQL中我们指定需要完成的任务而在Pig中我们则指定任务完成的方式。Pig脚本其实都是转换成MapReduce任务来执行的,不过Pig脚本会比对应的MapReduce任务简短很多所以开发的速度要快上很多。
Hive vs SQL
SQL是一门通用的数据库语言,大量的事务和分析语句都是由SQL完成的。Hive则是以数据分析为目标所设计的,这意味着虽然Hive缺乏更新和删除这样的功能但读取和处理大量数据的速度会比SQL快得多。所以Hive SQL看起来像SQL但在更新和删除等功能上两者还是有很大区别的。虽然有所不同,但如果你有SQL背景的话学习起Hive还是很容易的。不过要注意两者在构造和语法上的区别否则容易混淆。
现在我们已经对三种数据挖掘语言进行了介绍和对比,接下来就来分析一下三种语言最适用的情况。
1. 什么时候用Apache Pig
当你需要处理非格式化的分布式数据集时,如果想充分利用自己的SQL基础,可以选择Pig。使用Pig你无需自己构建MapReduce任务,有SQL背景的话学习起来比较简单,开发速度也很快。
2. 什么时候用Apache Hive
有时我们需要收集一段时间的数据来进行分析,而Hive就是分析历史数据绝佳的工具。要注意的是数据必须有一定的结构才能充分发挥Hive的功能。用Hive来进行实时分析可能就不是太理想了,因为它不能达到实时分析的速度要求(实时分析可以用HBase,Facebook用的就是HBase)。
3. 什么时候用SQL
SQL是这三者中最传统的数据分析手段。随着用户需求的改变SQL本身也在进行着更新,所以即便到了今天也不能说SQL过时。对于专业的数据分析师来说SQL当然比Excel强多了但要用它来进行快速的复杂处理和分析还是显得有点欠缺。如果所进行的分析比较简单的话SQL仍然是一个非常趁手的工具。它历史上的广泛使用和灵活性也使它广受开发人员欢迎。大部分开发人员都对SQL有所了解所以使用SQL的话开发人员从项目开始的第一天就能有所产出。SQL提供的扩展和优化功能也让我们能够根据需求进行定制。
显然不同的数据没有一个所有情况都适用的查询工具,根据自己的需求来选择不同工具才是正确的方法。

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-20 14:56

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表