网站大量收购独家精品文档,联系QQ:2885784924

基于数据流的大规模数据分析处理语言语言——Pig Latin.doc

基于数据流的大规模数据分析处理语言语言——Pig Latin.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于数据流的大规模数据分析处理语言语言——Pig Latin

基于数据流的大规模数据分析处理语言语言——Pig Latin 摘要 随着互联网的飞速发展,数据量不断增大,对海量数据的的按需分析处理需求不断增加。传统的SQL语言对海量数据的查询效率地下、开销过大,难以满足需求,map/?reduce的单输入,两阶段数据流编程模式过于苛刻,系统难以优化,Pig Latin,该语言借鉴了SQL和map/reduce两者的优点,既具有类似SQL的灵活可变式性,又有过程式语言的数据流特点。 关键词 Pig Latin 海量数据 UDF 1、Pig Latin简介 对海量数据的按需分析处理需求不断增加,尤其是对于因特网公司,它们的技术革新主要依赖于对每天收集的数据的分析处理能力。要提高如此巨大数据集的存储和分析效率,必须采用高度并行的系统,例如:shared-nothing cluster。并行数据库产品,如:Teradata 提供了一种解决方案,但是这种方案的web规模扩展开销太大,性价比不高,而且为程序员提供了一种不太自然的编程语言-SQL。 事实上很多程序员更加偏爱过程式程序设计语言,因为这种语言的数据流更加清晰,便于分析和调试。这也是map/reduce编程模型流行的原因之一。另外map/reduce的运行于普通商业硬件组成的集群,软件框架保证了可靠性和可用性,通过低端硬件实现了高性能计算,这也是map/reduce的优势所在。 尽管如此,map/?reduce也存在一些限制,它的单输入,两阶段数据流编程模式过于苛刻,对于超出该限制之外的数据分析任务,需要进行一些额外的数据转换。另外,它没有通用操作子,即使是对最通用的操作,如:projection和filtering。这些限制导致map/reduce代码重用性和可维护性不高,任务的分析语义不够清晰,将对系统性能优化造成影响。 基于以上问题,Yahoo!开发了一种新的基于数据流的大规模数据分析处理语言-Pig Latin,该语言借鉴了SQL和map/reduce两者的优点,既具有类似SQL的灵活可变式性,又有过程式语言的数据流特点。 首先以一个例子来直观感受Pig Latin的特点: 假设我们有一个表urls:(url,category,pagerank) 下面是一个简单的SQL查询,对每个足够大的分类,找出其包含的高pagerank的平均值。查询如下: SELECT category,AVG(pagerank) FROM urls WHERE pagerank0.2 GROUP BY category HAVING COUNT(*)106 与上述SQL等价的Pig Latin程序如下: good_urls=FILTER urls BY pagerank0.2; groups=GROUP good_urls BY category; big_groups=FILTER groups BY COUNT(good_urls)106; output=FOREACH big_groups GENERATE category, AVG(good_urls.pagerank); 可见,Pig Latin是一种一步一步顺序执行的编程语言,每一步都完成一次数据转换。这种风格为很多程序员所喜爱。同时每步的转换也都是高级抽象,例如:filtering,grouping,aggregation,抽象级别类似于SQL。 事实上,Pig Latin程序更像是对查询执行计划的规范。因此更易于程序员理解和控制。Pig Latin的实现系统叫pig,Yahoo!的程序员使用pig对大规模数据进行分析处理。Pig Latin程序被编译为mapreduce作业,在hadoop上执行。 2、特点和动机 2.1、数据流语言 Pig Latin语言在编程风格上与SQL有明显差别,前者凸显了程序的执行数据流,后者只关注最终结果。SQL更适合于编程经验不丰富的程序员,适合小规模数据集;Pig Latin更适合有经验的程序员和大规模数据集。 2.2、 快速开始和协同工作能力 Pig支持对各种存储格式的查询处理,前提是用户要给出特定的处理函数,该函数能够分析文件内容,提取需要的元组,因此Pig不需要像传统数据库管理系统那样在查询数据之前要花费大量时间导入数据。类似地,Pig程序的输出也会按照用户自定义函数将元组类型转换为特定格式的字节序列。这就简化了后续应用程序对Pig输出结果的使用,例如可视化应用程序或者类Exel的电子表格应用程序。 2.3、 用户自定义函数(UDF) 对搜索日志,爬虫数据,点击流等数据分析的关键就是定制化处理。例如,一个用户对搜索词的自然语言填充感兴趣,或者判断一个特殊的网页是否是spam等都需要定制化处理。 为完成这种特殊的数据处理任务,Pig Latin提供UDF实

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档