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

【编者按】在笔者看来,语言和工具之争从来都没有太大的意义,所谓存在既有道理,如何在场景下做出最合适的选择才至关重要。本文,DeZyre公司专家Manisha Nandy Mazumder对比了Pig、Hive和SQL的区别,并为读者浅谈了一些选择标准。

以下为译文

有人说对于大数据分析来说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提供的扩展和优化功能也让我们能够根据需求进行定制。

显然不同的数据没有一个所有情况都适用的查询工具,根据自己的需求来选择不同工具才是正确的方法。

点击阅读英文原文(译者/刘旭坤 责编/仲浩)

CSDN原创编译文章,禁止转载,侵权必究。

本文分享自微信公众号 - CSDN技术头条(CSDN_Tech)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-01-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

嫌弃Hadoop?可能是你的打开方式有问题

原作者 Andrew Brust 编译 CDA 编译团队 本文为 CDA 数据分析师原创作品,转载需授权 关于 Hadoop 所谓的消亡,以及它跌落神坛的报...

22190
来自专栏祝威廉

让Spark成为你的瑞士军刀

依托于Spark Streaming /Spark SQL,封装了一套通过配置和SQL就能完成批处理和流式处理的引擎,这样可以很好的完成复杂的ETL处理过程,实...

9920
来自专栏大数据技术学习

常用的大数据技术有哪些?hadoop学习总结

大数据技术为决策提供依据,在政府、企业、科研项目等决策中扮演着重要的角色,在社会治理和企业管理中起到了不容忽视的作用,很多国家,如中国、美国以及欧盟等都已将大数...

31820
来自专栏大数据和云计算技术

hadoop发行商介绍:Cloudera

‍‍‍‍在Hadoop生态系统中,规模最大、知名度最高的公司则是Cloudera。现在国内很多公司也都选用他们的发行版本(CDH)。‍‍ ‍‍Cloudera由...

32980
来自专栏大数据和云计算技术

SQL on Hadoop技术分析(一)

背景 Hadoop的诞生是划时代的数据变革,但关系型数据库时代的存留也为Hadoop真正占领数据库领域埋下了许多的障碍。对SQL(尤其是PL/SQL)的支持一...

42750
来自专栏人工智能头条

3位Committer,12场国内外技术实践,2016中国Spark技术峰会议题详解

25850
来自专栏PPV课数据科学社区

大数据主流工具,你知道几个?

业内有这样一种说法,SQL虽然在大数据分析领域久经考验,但是无奈长江后浪推前浪,和炙手可热的Hadoop相比,SQL已经过时了。这个说法有点言过其实,现在很多的...

34770
来自专栏腾讯大数据的专栏

飞起来的大象-Hadoop从离线到在线

时代在变迁,市场在变化,周边的软硬件环境也突飞猛进般的发展,同时企业的业务需求也不断升级,从规模到成本都有较高的要求,这刺激Hadoop生态圈的变革。据AMR研...

32580
来自专栏SAP最佳业务实践

从SAP最佳业务实践看企业管理(182)-作业成本要素与核算模型

作业成本核算模型是实施作业成本法(Activity-Based Costing)的基础,是对作业成本法核算体系的描述,因此作业成本核算模型在作业成本法的实施过程...

31870
来自专栏恰童鞋骚年

Hadoop学习笔记系列文章导航

  这是一个信息爆炸的时代。经过数十年的积累,很多企业都聚集了大量的数据。这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼数成金成为当务之...

9920

扫码关注云+社区

领取腾讯云代金券