使用Cassandra和Nutch爬网

因此,您想从互联网上收集大量数据吗? 有什么比Cassandra更好的存储机制? 使用Nutch可以轻松做到这一点。

人们经常在Nutch后面使用Hbase。 这可行,但是如果您是(或想成为)Cassandra商店,则可能不是理想的解决方案。 幸运的是,Nutch 2+使用Gora抽象层访问其数据存储机制。 Gora支持Cassandra。 因此,对配置进行一些调整后,您可以使用Nutch将内容直接收集到Cassandra中。

我们将从Nutch 2.1开始……我想直接从源代码中获取:

$ git clone https://github.com/apache/nutch.git -b 2.1
...
$ ant

构建之后,您将拥有一个nutch / runtime / local目录,其中包含要执行的二进制文件。 现在让我们为Cassandra配置Nutch。

首先,我们需要通过将以下xml元素添加到nutch / conf / nutch-site.xml中来向Nutch添加代理:

<property><name>http.agent.name</name><value>My Nutch Spider</value>
</property>

接下来,我们需要告诉Nutch使用Gora Cassandra作为其持久性机制。 为此,我们在nutch / conf / nutch-site.xml中添加以下元素:

<property><name>storage.data.store.class</name><value>org.apache.gora.cassandra.store.CassandraStore</value><description>Default class for storing data</description>
</property>

接下来,我们需要向Gora讲述Cassandra。 编辑nutch / conf / gora.properties文件。 注释掉SQL条目,并取消注释以下行:

gora.cassandrastore.servers=localhost:9160

此外,我们需要为gora-cassandra添加依赖项。 编辑ivy / ivy.xml文件,然后取消注释以下行:

<dependency org="org.apache.gora" name="gora-cassandra" rev="0.2" conf="*->default" />

最后,我们要使用新的配置和附加的依赖项重新生成运行时。 使用以下ant命令执行此操作:

ant runtime

现在我们可以运行了!

创建一个名为“ urls”的目录,其中包含名为seed.txt的文件,其中包含以下行:

http://nutch.apache.org/

接下来,将conf / regex-urlfilter.txt中的正则表达式url更新为:

+^http://([a-z0-9]*\.)*nutch.apache.org/

现在,爬行!

bin/nutch crawl urls -dir crawl -depth 3 -topN 5

那将把网页收获到卡桑德拉!!

让我们再看一下数据模型…

您会注意到创建了一个新的键空间:webpage。 该键空间包含三个表:f,p和sc。

[cqlsh 2.3.0 | Cassandra 1.2.1 | CQL spec 3.0.0 | Thrift protocol 19.35.0]
Use HELP for help.
cqlsh> describe keyspaces;
system  webpage  druid  system_auth  system_traces
cqlsh> use webpage;
cqlsh:webpage> describe tables;
f  p  sc

这些表中的每一个都是纯键值存储。 要了解它们中的每个,请查看nutch / conf / gora-cassandra-mapping.xml文件。 我在下面添加了一个代码段:

<field name="baseUrl" family="f" qualifier="bas"/>
<field name="status" family="f" qualifier="st"/>
<field name="prevFetchTime" family="f" qualifier="pts"/>
<field name="fetchTime" family="f" qualifier="ts"/>
<field name="fetchInterval" family="f" qualifier="fi"/>
<field name="retriesSinceFetch" family="f" qualifier="rsf"/>

从该映射文件中,您可以看到它放在表中的内容,但是不幸的是,该架构并没有真正从CQL提示中进行探索。 (我认为这里还有改进的余地)如果有一个CQL友好模式会很好,但是通过gora可能很难实现。 las,这可能是抽象的代价。

因此,最简单的方法是使用螺母工具来检索数据。 您可以使用以下命令提取数据:

runtime/local/bin/nutch readdb -dump data -content

完成后,进入数据目录,您将看到用于提取数据的Hadoop作业的输出。 然后,我们可以将其用于分析。

我真的希望Nutch为C *使用更好的架构。 如果该数据可立即在C *中使用,那将是很棒的。 如果有人进行了增强,请告诉我!

参考:在Brian ONeill的Blog博客上,我们的JCG合作伙伴 Brian ONeill 使用Cassandra和Nutch爬网。

翻译自: https://www.javacodegeeks.com/2013/10/crawling-the-web-with-cassandra-and-nutch.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

弹性盒布局实例

今天给大家搞一个弹性盒布局的实例&#xff0c;最近一直在复习一些基础的东西&#xff0c;所以一直会跟大家分享一些基础的东西 说实话&#xff0c;最近感觉被掏空了&#xff0c;别问我为什么&#xff0c;谁去保健谁知道&#xff0c;哈哈&#xff0c;注意安全&#xff0c;好了步…

win7插了耳机还是外放_安卓手机用耳机听歌音量太大怎么办

大部分安卓手机控制音量不是线性调节的&#xff0c;很难随心调节音量大小&#xff0c;这导致用耳机插手机听歌的时候即使开了最低音量&#xff0c;很多人觉音量还是太大&#xff0c;尤其是在夜深人静的时候。怎么解决呢&#xff1f;个人整理了一些方法。一无需root&#xff0c;…

skype for business 无法共享桌面、无法传输图片

以管理员身份运行如下PowerShell命令&#xff0c;清除Skype for Business缓存记录 #以管理员身份运行如下PowerShell命令&#xff0c;清除Skype for Business缓存记录 Stop-Process -Name "lync*" Stop-Process -Name "outlook*" Stop-Process -Name "…

骨牌

DP,em.......&#xff0c;代码&#xff1a; #include<iostream> #include<algorithm> #include<cstring> using namespace std; int a[1100],b[1100]; int dp[1100][12005]; int n; int main() {cin>>n;for(int i1;i<n;i){cin>>a[i]>>b…

java 读取ppt文件_java使用poi读取ppt文件和poi读取excel、word示例

Apache的POI项目可以用来处理MS Office文档&#xff0c;codeplex上还有一个它的.net版本。POI项目可创建和维护操作各种基于OOXML和OLE2文件格式的Java API。大多数MS Office都是OLE2格式的。POI通HSMF子项目来支持Outlook&#xff0c;通过HDGF子项目来支持Visio&#xff0c;通…

vue lang_新疆人的“lang”是“浪”吗?

小编&#xff1a;“老王&#xff0c;天气这么热&#xff0c;过几天我们几个人约上要到巩乃斯lang起呢也享受一下避暑生活么&#xff0c;你去不去&#xff1f;“老王&#xff1a;”这个礼拜六礼拜天都有事呢礼拜六我乌什塔拉的姨娘家出嫁丫头呢礼拜天五号渠的阿哥家给娃娃娶媳妇…

js将canvas保存成图片并下载

<canvas id"canvas" width"400" height"400"></canvas> <div><button id"save">保存</button> </div>var arr [{locations:[[0,0],[200,200],[0,400]],color:"red"},{locations:[[0,0…

如果Java快死了,那么它肯定看起来非常健康

Java快要死了的奇怪但流行的断言只能在没有证据的情况下提出&#xff0c;而不是因为它。 在酷孩子闲逛的论坛&#xff08;Hacker News&#xff0c;Reddit等&#xff09;中反复出现的偏见与Java语言背道而驰。 人们常常反复感叹 Java冗长而流行。 虽然我接受第一个描述符&#…

java 图片去除黑边_根据 Map 上的变量绘制彩色和形状的点时,保持符号的黑色边框(geom_point)...

我的问题与this thread有些相关&#xff0c;但我想为每个符号实际上都有黑色边框&#xff0c;因为我有符号重叠的实例&#xff0c;我认为有边框会有所帮助 . 但是&#xff0c;我的颜色和形状基于geom_point中美学内部的变量&#xff0c;因此使用shape 21和color NA的解决方案…

使用GreenDao 添加字段,删除表,新增表操作

GreenDao 给我个人感觉 比一般的ORM框架要好很多&#xff0c;虽然说上手和其他的比起来&#xff0c;较复杂&#xff0c;但是如果使用熟练以后&#xff0c;你会爱上这个框架的 用这些ORM 框架给我的感觉都是&#xff0c;当升级时&#xff0c;都需要进行数据库所有表的删除&#…

linux下log日志乱码_如何用 Linux 技巧大大提高工作效率?

作者 | 守望先生责编 | 屠敏前言Linux中的一些小技巧可以大大提高你的工作效率&#xff0c;本文就细数那些提高效率或者简单却有效的Linux技巧。命令编辑及光标移动这里有很多快捷键可以帮我们修正自己的命令。接下来使用光标二字代替光标的位置。删除从开头到光标处的命令文本…

安卓java桌面图标程序_android如何定制默认桌面上应用程序和shortcut图标 | 学步园...

可以在res/xml/default_workspace.xml文件中增加或删除tag标记块如果想删除默认browser图标&#xff1a;launcher:packageName"com.android.browser"launcher:className"com.android.browser.BrowserActivity"launcher:screen"2"launcher:x"…

Go语言基础之15--文件基本操作

一、文件读写 1.1 os.File os.File封装所有文件相关操作&#xff0c; 是一个自定义的struct。 a. 打开一个文件进行读操作&#xff1a; os.Open(name string) (*File, error) Open是以读的方式打开文件&#xff08;底层调用的是Openfile函数&#xff09;。 b. 关闭一个文件&…

Event flow

考虑这么个例子&#xff1a; <div><button id"btn">Click Me!</button> </div> 哪怕一个web开发的初学者都会知道&#xff0c;当我们鼠标在button上点击时&#xff0c;会在button上触发一个click事件。但是&#xff1a; button是div的一个子…

使用vux组件库常见报错($t)处理

错误一&#xff1a; [Vue warn]: Property or method "$t" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.…

UIBOT调试时步入的快捷键_远程调试 bug ,快速定位问题

情况是这样的&#xff0c;现在的产品出现了一个 bug ,需要及时排查快速解决&#xff0c;你是怎么样解决的呢&#xff1f;解决&#xff1a;登陆服务器&#xff0c;查看日志&#xff0c;看一下哪里有问题&#xff0c;然后本地运行程序进行debug ,解决后&#xff0c;在重新打包部署…

Spring面向方面的编程

介绍 在理想的面向对象系统中&#xff0c;我们希望将每个对象设计为执行一项特定任务。 但是&#xff0c;除了执行其主要任务外&#xff0c;对象还执行被动任务&#xff0c;例如日志记录&#xff0c;事务&#xff0c;安全性&#xff0c;缓存等。这些被动活动是必需的&#xff0…

vim ctags java源码_如何使用vim的插件Ctags查看Linux源码

一.ubuntu下安装Linux内核源码(1).查看自己的内核版本(2).查看源内的内核源码类表(3).下载源码(4).进入/usr/src(5).解压下载的文件到用户主二.安装vim插件Ctags和使用插件的介绍Ctags工具是用来遍历源代码文件生成tags文件&#xff0c;这些tags文件能被编辑器或其它工具用来快…

MySql - GROUP BY 和 HAVING关键字

本文主要针对GROUP BY 和 HAVING两个关键字进行分析 使用测试表如下&#xff1a; 测试前&#xff0c;只知道GROUP BY 这个关键字的作用是根据一个字段进行分组&#xff0c;去重。HAVING对分组设置条件。 具体分组规则&#xff0c;设置条件不清楚。 测试开始 首先 单独使用GROUP…

javascript引擎工作原理

1. 什么是JavaScript解析引擎&#xff1f; 简单地说&#xff0c;JavaScript解析引擎就是能够“读懂”JavaScript代码&#xff0c;并准确地给出代码运行结果的一段程序。比方说&#xff0c;当你写了 var a 1 1; 这样一段代码&#xff0c;JavaScript引擎做的事情就是看懂&#…