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

Pig分析数据过程

阅读更多

,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里,这样以来就非常方便快捷了。

分享到:
评论

相关推荐

    用于进行hadoop pig分析的日志

    标题中的“用于进行Hadoop Pig分析的日志”指的是在大数据处理场景中,使用Apache Pig工具对网站访问日志数据进行分析的过程。Pig是Hadoop生态系统中的一个高级数据处理语言,它提供了一种抽象的方式,使得用户可以...

    Apache Hadoop---Pig.docx

    Pig 构建在 Hadoop 平台上,通过提供一个名为 Pig Latin 的高级抽象语言,简化了在 Hadoop 上进行数据分析的过程。Pig Latin 允许数据工程师用简单的语句来描述复杂的分析任务,减少了直接编写 MapReduce 作业的复杂...

    Pig分析报告.pdf

    Pig Latin 常用于因特网公司的数据分析,例如对用户行为数据、网页日志、社交媒体数据等进行挖掘和分析。通过 Pig Latin,程序员可以编写简洁的脚本来执行复杂的数据处理任务,如分类统计、关联规则发现、聚类分析等...

    storm-yarn结合pig实现广告点击量分析

    Storm用于实时数据流处理,YARN作为Hadoop的资源管理系统,而Pig则提供了一种高级数据处理语言,简化了大规模数据集的分析。这里我们将深入探讨如何将这三个组件结合,实现广告点击量的实时分析。 首先,让我们了解...

    pig编程指南中的样例脚本、UDF、数据集

    在实践中,可以使用Pig的`LOAD`命令加载数据,然后应用一系列操作来探索、转换和分析数据,最后通过`DUMP`或`STORE`命令展示结果或将其保存回HDFS。 在《Programming Pig》第二版中,读者可以期待更加详尽的示例、...

    pig官方基础教程

    Pig允许用户执行复杂的转换和数据查询,这些操作原本需要使用Java MapReduce编程,而Pig通过提供一套数据流语言和执行框架,简化了这一过程。 Pig基础教程涵盖了Pig语言的基本概念、语法、数据类型、操作符和内置...

    完整版大数据云计算课程 Hadoop数据分析平台系列课程 Hadoop 08 Pig安装与Pig Latin语言,应用案例 共2

    而Pig作为Hadoop生态系统的一部分,是专门设计用于处理大规模数据集的高级数据分析工具。本课程聚焦于“Hadoop 08 Pig安装与Pig Latin语言”,旨在深入理解Pig的工作原理及其在实际应用中的价值。 Pig拉丁语(Pig ...

    pig源码0.15版

    Pig 0.15版是Pig发展过程中的一个重要里程碑,它的源码为我们提供了深入理解大数据处理框架内部机制的机会。对于初学者来说,通过学习Pig 0.15的源码,可以提升对大数据处理流程、分布式计算模型以及脚本语言解析等...

    pig的源码包

    通过分析这些源代码,我们可以了解Pig如何实现任务调度、数据分区、并行度控制等关键功能。 3. 架构设计:Pig采用三层架构,即前端(Frontend)、中间层(MiddleManager)和后端(Backend)。前端负责解析和验证Pig...

    pig编程指南源码

    通过源码分析,我们可以了解这些过程的工作原理。 六、Pig与Hadoop的集成 Pig运行在Hadoop之上,利用Hadoop的分布式计算能力。源码中可能包含了如何在Hadoop集群上运行Pig脚本的示例,以及如何配置Pig与Hadoop的...

    大数据之pig 命令

    - **优点**:Pig为常见的数据处理逻辑提供了预封装的命令,用户可以直接调用这些命令而无需编写复杂的MapReduce代码,这大大简化了开发过程。此外,使用Pig可以避免一些常见的问题,如数据倾斜问题。 - **缺点**:...

    Programming Pig(pig编程).pdf

    Pig编程的主要用途包括但不限于数据挖掘、数据仓库的提取、转换和加载(ETL)任务、大规模数据分析和迭代算法处理等。Pig由于其处理速度快、编写效率高等优点,被越来越多的数据科学家和工程师所使用。 Pig的历史...

    pig-0.9.2.tar.gz下载

    - **稳定性提升**:增强了错误处理和恢复机制,使得在大型数据处理过程中更加健壮。 4. **使用Pig-0.9.2.tar.gz**: 下载并解压"Pig-0.9.2.tar.gz"后,开发者可以在本地或Hadoop集群上安装和运行Pig。这通常包括...

    buliding\horse\pig\rabbit\table\wolf等各种点云数据集pcd文件

    在处理PCD文件时,通常会使用像PCL(Point Cloud Library)这样的开源库,该库提供了丰富的工具和算法,用于点云数据的处理、分析、滤波、分割、特征提取、匹配和三维重建。 点云数据集的主要用途之一是进行三维...

    pig java 编程jar包

    Pig通常应用于大数据处理,比如日志分析、用户行为追踪、数据挖掘等。结合Java编程,它可以处理各种复杂的数据处理需求,特别是在数据量庞大且需要定制化操作的情况下。 7. **开发和部署**: 使用`pig.jar`和`...

    Pig Programming

    Pig Latin是Pig编程语言的基础,它允许用户通过简单的语句对大规模数据进行复杂分析,而无需深入理解MapReduce的底层细节。Pig Latin提供了一种声明性的方式,让用户可以专注于数据分析的逻辑,而不是关注如何分布式...

    基于PigLatin语言的海量数据分析

    - **错误处理**:Pig 提供了强大的错误处理机制,可以在数据处理过程中自动检测和修复常见问题。 #### 五、案例研究 以电商行业为例,PigLatin 可以帮助分析师从大量的用户行为数据中提取有价值的信息。例如,通过...

    pig-0.12.0-cdh5.5.0.tar.gz

    Apache Pig 是一个用于大数据分析的高级编程平台,它提供了名为 Pig Latin 的脚本语言,使得用户能够以相对简单的语法处理大规模数据集。Pig-0.12.0 是 Pig 的一个重要版本,它在功能、性能和易用性方面都有所提升。...

Global site tag (gtag.js) - Google Analytics