`
qindongliang1922
  • 浏览: 2184057 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117537
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125922
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59912
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71301
社区版块
存档分类
最新评论

玩转大数据系列之Apache Pig如何与Apache Lucene集成(一)

阅读更多

在文章开始之前,我们还是简单来回顾下Pig的的前尘往事:

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包,并使用索引存储

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

---注册依赖相关的包
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里,这样以来就非常方便快捷了。

本文就到此结束,有任何疑问的朋友,都可以直接在微信公众号里留言咨询,公众号的二维码在文末能够看到,大家用手机骚一下,就能直接关注,好了,不扯了,赶紧回家,在尼玛不走,苦逼的就没地铁了!!!




想了解更多有关电商互联网公司的搜索技术和大数据技术的使用,请欢迎扫码关注微信公众号:我是攻城师(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!








  • 大小: 85.5 KB
1
0
分享到:
评论

相关推荐

    2-大数据技术之Hadoop(入门)

    此外,了解Hadoop与其他大数据工具如Spark、Flink的集成也是很重要的。在实际应用中,根据业务需求选择合适的Hadoop发行版,并掌握集群部署、监控和故障排查技能,能够帮助你有效地利用Hadoop处理和分析大数据。 总...

    2_尚硅谷大数据之从Hadoop框架讨论大数据生态1

    Hadoop生态系统远不止HDFS和MapReduce,还包括其他一系列工具和服务,如HBase、Hive、Pig、Spark、Flume、Oozie等,这些工具共同构建了一个强大的大数据处理环境。HDFS提供了高容错性的分布式文件系统,而YARN作为...

    PigExtend:Apache Pig+MapReduce给LuceneSolrElasticSearch构建索引

    Apache Pig+MapReduce给Lucene/Solr/ElasticSearch构建索引 ####项目简介 主要是利用了Pig框架简化了自己写Hadoop MapReduce程序来构建大规模并行索引的问题,里面封装了主流的全文检索框架,如Lucene,Solr和...

    1大数据技术之Hadoop(入门).doc

    【大数据技术之Hadoop入门】 Hadoop是一种由Apache基金会开发的分布式系统基础架构,主要用于解决海量数据的存储和分析计算问题。它源自于Doug Cutting创建的Lucene项目,旨在实现类似Google的全文搜索功能。随着...

    大数据导论大数据导论大数据导论

    H2O)托管管理(比如:Apache Hadoop Benchmarking)安全管理(常用的有 Gateway)大数据系统部署(可以看下 Apache Ambari)搜索引擎架构(学习或者企业都建议使用 Lucene 搜索引擎)多种数据库的演变(MySQL/...

    精品课程推荐 大数据与云计算教程课件 优质大数据课程 01.Hadoop简介与安装入门(共29页).pptx

    这系列的大数据与云计算教程全面介绍了从Hadoop基础知识到其生态系统中的各种工具,以及相关的云计算概念。通过学习,可以掌握大数据处理的关键技术和实践方法,为从事大数据分析、云计算应用和相关开发工作打下坚实...

    apache doc

    Apache Doc 是一个重要的知识点,它指的是Apache软件基金会中各种项目提供的文档资料。这些文档通常包含了项目的用户指南、开发者手册、API参考以及安装和配置教程等,旨在帮助用户理解和使用Apache项目。Apache作为...

    基于Hadoop分布式系统的地质环境大数据框架探讨.pdf

    基于Hadoop分布式系统的地质环境大数据框架探讨,涉及了地质环境大数据的特性分析,以及提出了一种基于Hadoop生态系统架构的框架。这个框架支持数据清洗转换、分布式数据存储管理、数据挖掘、文本搜索和数据可视化等...

    完整版大数据云计算课程 Hadoop数据分析平台系列课程 Hadoop 01 Hadoop介绍 共33页.pptx

    Hadoop是大数据处理的核心框架,最初由Apache软件基金会的Lucene项目分支Nutch发展而来,旨在解决大规模数据集的分布式计算问题。Hadoop主要由两个核心组件构成:Hadoop Distributed File System (HDFS) 和 ...

    大数据hadoop分享.pptx

    Hadoop生态系统还包括一系列工具,如Hive和Pig提供SQL-like接口进行数据分析,HBase是一个分布式的、面向列的NoSQL数据库,提供实时查询能力;Sqoop用于在Hadoop和传统RDBMS之间传输数据;Oozie是工作流调度系统,...

    Big Data Glossary-大数据术语

    #### 一、大数据基础概念与技术 **1.1 文档导向型数据库(Document-Oriented)** 文档导向型数据库是一种非关系型数据库,它将数据存储为文档形式,通常使用JSON或XML格式。这种类型的数据库非常适合存储结构化和...

    【企业开源系列】Twitter:收发一条推文的背后

    此外,Twitter还依赖Apache Lucene,一个全文检索引擎,提供快速的搜索功能。Apache Pig则作为在Hadoop上的数据分析平台,通过Pig Latin语言简化了对海量数据的MapReduce操作。 其次,Twitter的服务器和存储层依赖...

    从大数据热看我国计算机学界的机遇.pptx

    Cafarella在2004年根据Google的研究成果实现,并在2006年由Apache基金会接纳,成为Lucene子项目Nutch的一部分。Hadoop的主要组成部分包括HDFS(Hadoop分布式文件系统)和MapReduce,它们为大规模数据处理提供了基础...

    大数据技术分享 大数据技术深入浅出 共39页.pdf

    根据提供的文档信息,我们可以深入探讨其中提及的大数据技术的关键知识点,包括大数据的发展历史、Hadoop与Spark的基础介绍以及相关的开源技术框架。 ### 大数据技术发展简史 大数据技术的发展经历了多个阶段,从...

    卢亿雷-Hadoop生态系统分析

    Hadoop生态系统是由Apache软件基金会开发的一个开源框架,用于存储和处理大数据。该生态系统是由多个组件构成的,每个组件都有其独特的功能和用途,共同为大数据的存储、处理、分析提供了一个全面的解决方案。以下是...

    elasticsearch与hadoop比较

    而Hadoop是一个由Apache软件基金会开发的开源框架,它允许使用简单的编程模型来分布式地处理大数据,其核心是HDFS分布式文件系统和MapReduce分布式计算模型,除此之外,Hadoop生态系统还包括了Hive、HBase、Pig、...

    第三章 Hadoop基础.docx

    它的出现源于Doug Cutting为实现类似Google的全文搜索功能而创建的Lucene项目,随后经过一系列演变,特别是借鉴了Google的GFS、MapReduce和BigTable的思想,最终形成了现在的Hadoop生态。 Hadoop的发展历程可以追溯...

    一个全栈增长工程师的练手项目集 1

    Pig Latin语句会被转化为一系列MapReduce任务执行。 3. **Jython** 是Python在Java平台上的实现,它不仅是一个Python编译器,还是一个完整的Python运行环境。在本项目中,Jython用于与Hadoop和Pig交互,可能涉及到...

Global site tag (gtag.js) - Google Analytics