`
weitao1026
  • 浏览: 1056108 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

1,Pig是什么?
Pig最早是雅虎公司的一个基于Hadoop的并行处理架构,后来Yahoo将Pig捐献给Apache(一个开源软件的基金组织)的一个项目,由Apache来负责维护,Pig是一个基于 Hadoop的大规模数据分析平台,它提供的SQL-like语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简 易的操作和编程接口,这一点和FaceBook开源的Hive(一个以SQL方式,操作hadoop的一个开源框架)一样简洁,清晰,易上手! 

2,Pig用来干什么?
要回答这个问题,还得回归到雅虎当初使用Pig的目的:

1)吸收和分析用户的行为日志数据(点击流分析、搜索内容分析等),改进匹配和排名算法,以提高检索和广告业务的质量。
2)构建和更新search index。对于web-crawler抓取了的内容是一个流数据的形式,这包括去冗余、链接分析、内容分类、基于点击次数的受欢迎程度计算(PageRank)、最后建立倒排表。
3)处理半结构化数据订阅(data seeds)服务。包括:deduplcaitin(去冗余),geographic location resolution,以及 named entity recognition.

3, Pig在Hadoop生态系统中的地位





OK,下面回答正题,散仙最近在做的一个项目也是有关我们站搜索的关键词的点击率分析,我们的全站的日志数据,全部记录在Hadoop上,散仙初步要做的任务以及此任务的意义如下:

(1)找出来自我站搜索的数据
(2)分析关键词在某个时期内的搜索次数
(3)分析关键词在某个时期的点击次数
(4)通过这些数据,找出一些搜索无点击,搜索有点击,搜索点击少,和少搜索点击高等的一些边界关键词
(5)通过分析这些关键词,来评估我们站的搜索质量,给搜索方案的优化,以及改良提供一些参考依据
(6)使用Lucene或Solr索引存储分析后的数据,并提供灵活强大的检索方式



具体的使用Pig分析数据过程,散仙在这里就不细写了,感兴趣的朋友,可以在微信公众号的后台留言咨询,今天主要看下,Pig分析完的数据结果如何存储到Lucene索引里,至于为什么选择lucene系列的索引存储,而不选择数据库存储或直接存储在HDFS上,最大的原因还是在速度上,散仙前段时间分析的数据是直接存储在HDFS上,存HDFS上是很好,又能备份,还能容灾,但是! 但是查询,读取,过滤,转换就非常麻烦了,速度慢的没法说,每次都得读取数据,然后使用JAVA程序计算出最终结果,然后给前端展示,即使数据量并不太大,但中间耗费了较多的时间数据的读取,传输和分析上,所以这次在分析关键词的转化率时,干脆就顺便研究下,如何使用Pig和Lucene,Solr或者ElasticSearch集成。


Pig或Hive本身能直接将各种格式的文件包括二进制,json,avro,以及bzip,gzip,lzo,snappy,orc等各种压缩格式存储在HDFS上或Hbase里,但是却不能直接将Lucene索引存储在HDFS上,至于为什么不能直接存储索引在HDFS上,这个与倒排索引的文件结构的组织方式有一定的关系,感兴趣的朋友可以在微信公众号上留言咨询,虽说不能直接存储在HDFS上,但是我们可以间接得通过他们的UDF函数来扩展Pig或Hive,使得他们支持索引存储,注意这里虽然实现了索引存储在HDFS上,但实质却是,在本地的临时目录先生成索引,然后又变相的拷贝到了HDFS上,算是一种折中的算式吧。在Pig里,需要定义两个UDF上来完成索引存储这件事,一个主要是创建索引,另一个是索引输出,在github上已有大牛实现了,我们需要做的工作:

(1)访问这个地址下载这个压缩包。
(2)提取出自己想要的部分,在eclipse工程中,修改定制适合自己环境的的代码(Lucene版本是否兼容?hadoop版本是否兼容?,Pig版本是否兼容?)。
(3)使用ant重新打包成jar
(4)在pig里,注册相关依赖的jar包,并使用索引存储

下面给出,散仙的测试的脚本:

Java代码 复制代码 收藏代码
  1. ---注册依赖相关的包  
  2. REGISTER  /home/search/nsconvent/spig/20150112/lucenepig/pigudf.jar;   
  3. REGISTER  /home/search/nsconvent/spig/20150112/lucenepig/lucene-analyzers-common-4.10.2.jar;   
  4. REGISTER  /home/search/nsconvent/spig/20150112/lucenepig/lucene-core-4.10.2.jar;   
  5. REGISTER  /home/search/nsconvent/spig/20150112/lucenepig/lucene-queryparser-4.10.2.jar;   
  6.   
  7. --声明别名引用(注意只能无参的引用,带参数的在反射时候,会出现异常)  
  8. DEFINE  LuceneStore  com.pig.support.lucene.LuceneStore;  
  9. --加载数据  
  10. a = load '/tmp/data/20150303/tt.txt' using PigStorage(',')  as (lbl:chararray,desc:chararray,score:int);  ;  
  11. --生成索引并存储在HDFS上,注意需要配置简单lucene索引方式(是否存储?是否索引?)  
  12. store a into '/tmp/data/20150303/luceneindex' using LuceneStore('store[true]:tokenize[true]');  
---注册依赖相关的包
REGISTER  /home/search/nsconvent/spig/20150112/lucenepig/pigudf.jar; 
REGISTER  /home/search/nsconvent/spig/20150112/lucenepig/lucene-analyzers-common-4.10.2.jar; 
REGISTER  /home/search/nsconvent/spig/20150112/lucenepig/lucene-core-4.10.2.jar; 
REGISTER  /home/search/nsconvent/spig/20150112/lucenepig/lucene-queryparser-4.10.2.jar; 

--声明别名引用(注意只能无参的引用,带参数的在反射时候,会出现异常)
DEFINE  LuceneStore  com.pig.support.lucene.LuceneStore;
--加载数据
a = load '/tmp/data/20150303/tt.txt' using PigStorage(',')  as (lbl:chararray,desc:chararray,score:int);  ;
--生成索引并存储在HDFS上,注意需要配置简单lucene索引方式(是否存储?是否索引?)
store a into '/tmp/data/20150303/luceneindex' using LuceneStore('store[true]:tokenize[true]');



至此,我们已成功将索引存储在HDFS上,别高兴太宰,这仅仅是一个开始而已,在这里大家可能有疑问,存储在HDFS上的索引是否能够直接查询或访问呢? 答案是肯定的,但不推荐大家直接读取HDFS上索引,即使了有了Hadoop的块缓存(Block Cache)提速,性能仍然是比较低的,除非你的集群机器不缺内存,否则,散仙还是建议大家直接把索引拷贝到本地磁盘再检索,这样做暂时比较麻烦,散仙在后面的文章里会介绍怎么把pig生成的结果集,直接以Http的方式存储到Solr或ElasticSearch里,这样以来就非常方便快捷了。

分享到:
评论

相关推荐

    pig的源码包

    《深入理解Pig:从源码剖析大数据处理框架》 Pig是Apache Hadoop生态系统中的一个数据处理框架,它提供了一种高级的编程语言——Pig Latin,用于编写大规模的数据处理作业。源码包是理解Pig工作原理、扩展功能和...

    pig源码0.15版

    《深入理解Pig 0.15源码:大数据处理框架的奥秘》 Pig是Apache Hadoop项目中的一个高级数据流语言和执行框架,主要用于处理大规模数据集。Pig 0.15版是Pig发展过程中的一个重要里程碑,它的源码为我们提供了深入...

    pig-0.7.0.tar.gz

    《Pig工具包在Hadoop云计算中的应用与详解》 Pig是Apache Hadoop生态系统中的一个强大工具,专为大规模数据处理而设计。"pig-0.7.0.tar.gz"是一个包含Pig 0.7.0版本的压缩包,它的出现为我们提供了一个高效的、基于...

    pig官方基础教程

    在Hadoop平台上,Pig是一种高级脚本语言,用于处理和分析大数据。Pig允许用户执行复杂的转换和数据查询,这些操作原本需要使用Java MapReduce编程,而Pig通过提供一套数据流语言和执行框架,简化了这一过程。 Pig...

    PIG微服务前后端源码

    【标题】"PIG微服务前后端源码"所涉及的知识点主要集中在微服务架构、前端开发和后端开发三个领域。PIG作为国内微服务热度最高的社区之一,其源码解析将帮助开发者深入理解微服务的设计理念和实现方式。 在微服务...

    pig-0.17.0.tar的安装包,

    《Apache Pig 0.17.0 安装与配置指南》 Apache Pig 是一个用于大数据分析的平台,它提供了一种高级语言 Pig Latin 来处理大规模数据集。Pig-0.17.0 是该平台的一个稳定版本,包含了多项优化和改进,适用于Hadoop...

    pig编程指南源码

    《Pig编程指南源码详解》 Pig是Apache Hadoop项目的一部分,它提供了一个高级数据流语言(Pig Latin)和一个用于处理大规模数据集的执行引擎。本指南将深入探讨Pig编程的核心概念,结合从GitHub下载的...

    apache pig 基础及应用

    apache pig 基础及应用,urldecode row_number web日志分析 根据 用户行为 做出 简易的 相似度 判断。

    pig-0.9.2.tar.gz下载

    《Pig语言与Map-Reduce:深入理解pig-0.9.2.tar.gz》 Apache Pig是Hadoop生态系统中的一个高级数据处理工具,它提供了一种面向用户的脚本语言,称为Pig Latin,用于构建Map-Reduce作业。Pig拉丁语简化了大数据处理...

    大数据之pig 命令

    ### 大数据之pig命令详解 #### 一、Pig简介及与Hive的比较 Pig是一款基于Hadoop的数据处理工具,它提供了一种高级语言(Pig Latin),使得用户能够更容易地处理大规模数据集。Pig的核心设计思想是为了简化大数据...

    pig java 编程jar包

    在IT行业中,Pig是Apache Hadoop项目的一部分,它提供了一种高级的、抽象的语言,称为Pig Latin,用于处理大规模数据集。Pig Java编程主要涉及到使用Java API与Pig Latin进行交互,以实现更灵活的数据处理需求。在本...

    pig-0.15.0

    《Apache Pig 0.15.0:大数据处理的利器》 Apache Pig 是一个用于大数据分析的平台,它提供了一种高级的编程语言——Pig Latin,使得数据处理变得更加简单和高效。标题“pig-0.15.0”表明我们讨论的是 Apache Pig ...

    pig-0.9.1.tar

    《Pig-0.9.1在Hadoop环境下的安装与配置详解》 Apache Pig是Hadoop生态系统中的一个高级数据处理工具,它提供了一种基于脚本语言的接口,使得用户可以更方便地进行大规模数据集的分析。Pig-0.9.1是Pig的一个早期...

    pig-0.16.0.tar安装包

    【标题】"pig-0.16.0.tar安装包" 涉及的主要知识点是Apache Pig的安装和使用,这是一个基于Hadoop的数据流编程平台,用于处理大规模数据集。Pig Latin是Pig的编程语言,它允许用户编写复杂的数据处理任务,而无需...

    PIGO搜索 v2.3

    PIGO是一个采集引擎,开始的时候是按照采集各大搜索引擎而设计的。随着需求的增加,现在PIGO不单单能采集搜索引擎,而且能聚合结果,甚至,加载不同的核心,PIGO就变成不同的网站。所以PIGO不是任何类型的网站,但又...

    Apache Pig的性能优化.pdf

    根据给定的文件信息,我们可以深入探讨Apache Pig的性能优化及其在大数据处理中的角色与优势。首先,让我们从Apache Pig的基本概念入手。 ### Apache Pig概述 Apache Pig是一种高生产力的数据流语言和执行框架,...

    pig-0.9.2.tar.gz

    标题中的"pig-0.9.2.tar.gz"是一个典型的Linux平台上的软件打包文件,它包含了一个名为"Pig"的工具的版本0.9.2。Pig是Apache Hadoop项目的一部分,主要用于处理大规模数据集的高级数据分析。Pig Latin是它的主要语言...

    pig格式图片编辑工具

    "pig格式图片编辑工具"是一个专注于处理特定图像格式(如pig, pceg)的软件,它提供了方便的图片转换和尺寸变换功能。 "Pig"格式可能是一个相对少见的图像格式,这种格式可能由特定的硬件或软件所支持,不被大多数...

Global site tag (gtag.js) - Google Analytics