阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache Pig如何与Apache Lucene集成

408次阅读
没有评论

共计 3494 个字符,预计需要花费 9 分钟才能阅读完成。

在文章开始之前,我们还是简单来回顾下 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 生态系统中的地位

Apache Pig 如何与 Apache Lucene 集成

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

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

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]’); 

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

————————————– 分割线 ————————————–

基于 Lucene 多索引进行索引和搜索 http://www.linuxidc.com/Linux/2012-05/59757.htm

Lucene 实战 (第 2 版) 中文版 配套源代码 http://www.linuxidc.com/Linux/2013-10/91055.htm

Lucene 实战 (第 2 版) PDF 高清中文版 http://www.linuxidc.com/Linux/2013-10/91052.htm

使用 Lucene-Spatial 实现集成地理位置的全文检索 http://www.linuxidc.com/Linux/2012-02/53117.htm

Lucene + Hadoop 分布式搜索运行框架 Nut 1.0a9 http://www.linuxidc.com/Linux/2012-02/53113.htm

Lucene + Hadoop 分布式搜索运行框架 Nut 1.0a8 http://www.linuxidc.com/Linux/2012-02/53111.htm

Lucene + Hadoop 分布式搜索运行框架 Nut 1.0a7 http://www.linuxidc.com/Linux/2012-02/53110.htm

Project 2-1: 配置 Lucene, 建立 WEB 查询系统 [Ubuntu 10.10] http://www.linuxidc.com/Linux/2010-11/30103.htm

————————————– 分割线 ————————————–

Lucene 的详细介绍 :请点这里
Lucene 的下载地址 :请点这里

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计3494字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7964288
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...