【数据工具】对比Pig、Hive和SQL,浅谈大数据工具差异

作者: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提供的扩展和优化功能也让我们能够根据需求进行定制。

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

来源:36大数据

1、回复“数据分析师”查看数据分析师系列文章

2、回复“案例”查看大数据案例系列文章

3、回复“征信”查看相关征信的系列文章

4、回复“可视化”查看可视化专题系列文章

5、回复“SPPS”查看SPSS系列文章

6、回复“答案”查看hadoop面试题题目及答案

7、回复“爱情”查看大数据与爱情的故事

8、回复“笑话”查看大数据系列笑话

9、回复“大数据1、大数据2、大数据3、大数据4”查看大数据历史机遇连载

PPV课大数据ID: ppvke123 (长按可复制)

本公众号专注大数据和数据科学领域,分享领域知识和相关技术文章,探索大数据商业价值,培养和挖掘大数据专业人才,欢迎大家关注!

本文分享自微信公众号 - PPV课数据科学社区(ppvke123)

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

嘉年华专访 | 我有故事,你有酒吗?

潘娟,京东金融高级DBA,主要负责京东金融生产数据库运维及数据库平台、中间件开发工作。多次参与京东金融6.18、11.11大促活动的护航工作。曾负责京东金融数据...

14330
来自专栏数据和云

杨廷琨Oracle Code大会分享:如何编写高效SQL(含PPT)

2018 Oracle Code 于5月17日在新加坡拉开帷幕。作为全球开发者交流分享的年度盛会,为吸引所有领域的开发者,Oracle今年将自1996年开始的J...

14120
来自专栏沃趣科技

沃趣微讲堂 | PXC、MGC&MGR原理与实践对比(一)

七月份,波多老师线下作了一场题为“PXC、MGC&MGR原理与实践对比”的精彩分享,整场下来,干货满满,现场的童鞋都听得灰常认真,反响热烈。分享结束后,也有很多...

21550
来自专栏最新技术

大数据架构的未来

大家应该都清楚,数据正在以巨幅的速度增长。如果能够有效地利用这些数据,可以发现非常有价值的内容,然而传统技术(许多早在40年前设计的,比如RDBMS这样的技术)...

660120
来自专栏Java架构

Java程序员从京东、阿里、携程面试回来,已成功拿到京东offer携程(一面)京东(笔试+两面技术+一面hr,拿到offer)总结

34830
来自专栏马洪彪

SqlServer示例数据库Northwind(一)——实体关系

在学习Spss统计分析、EA画实体关系图、PowerDesigner画数据库模型图等时,苦于找不到一个好的实例。由于实际工作中项目使用的表结构属于公司的商业保密...

46290
来自专栏灯塔大数据

干货|盘点最受欢迎的十个开源大数据技术

大数据已然成为当今最热门的技术之一,正呈爆炸式增长。每天来自全球的新项目如雨后春笋般涌现。幸运地是,开源让越来越多的项目可以直接采用大数据技术,下面就来盘点最...

35980
来自专栏Java架构

Java程序员从京东、阿里、携程面试回来,已成功拿到京东offer

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

Big data analytics beyond hadoop

今天给大家推荐一本书《big data analytics beyond hadoop》。书的名字应该可以翻译为《hadoop下一代数据分析技术》。 这本书主要...

345100
来自专栏哲学驱动设计

代码重构之路的艰辛

  我承认,这个标题很沉重。我有幸使用了一个开源的项目作为小范围内的二次开发应用。这个项目其实是挺大的,开源代码仅是其中一部分,在二次开发中我对源代码作了一些改...

19480

扫码关注云+社区

领取腾讯云代金券