因此,您想从互联网上收集大量数据吗? 有什么比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

使用Cassandra和Nutch爬网相关推荐

  1. cassandra使用心得_使用Cassandra和Nutch爬网

    cassandra使用心得 因此,您想从互联网上收集大量数据吗? 有什么比Cassandra更好的存储机制? 使用Nutch可以轻松做到这一点. 人们经常在Nutch后面使用Hbase. 这可行,但是 ...

  2. SHAREPOINT爬网设置

    F:\2009年\MOSS档案 http://share:30088/default.aspx  进入管理中心 共享服务管理-SharedServices1-搜索设置-内容源和爬网计划-本地 Offi ...

  3. 新工具:表单/Cookie 验证网站爬网设置工具

    在今年3月份的blog里面,我曾经说过SharePoint Team将会发布一个补丁来让SharePoint Server 2007的搜索引擎支持对基于表单/Cookie验证的网站进行爬网.今天,Sh ...

  4. Docker最全教程之Python爬网实战(二十二)

    Python目前是流行度增长最快的主流编程语言,也是第二大最受开发者喜爱的语言(参考Stack Overflow 2019开发者调查报告发布).笔者建议.NET.Java开发人员可以将Python发展 ...

  5. vs azure web_在Azure中迁移和自动化Chrome Web爬网程序的指南。

    vs azure web Webscraping as a required skill for many data-science related jobs is becoming increasi ...

  6. python web应用_为您的应用选择最佳的Python Web爬网库

    python web应用 Living in today's world, we are surrounded by different data all around us. The ability ...

  7. sharepoint2013用场管理员进行文档库的爬网提示没有权限,拒绝的解决方法

    爬网提示被拒绝,场管理员明明可以打开那个站点的,我初步怀疑是:环回请求(LoopbackRequest)导致的 解决方法就是修改环回问题.修改注册表 具体操作方法: http://www.c-shar ...

  8. 一步一步SharePoint 2007之四十一:实现Search(4)——设定爬网Schedule

    下面将记录每一步的操作过程. 1.首先进入Document Center中的Documents列表页面,并上传一个名为"[url]www.eallies.com.doc[/url]" ...

  9. SharePoint 2013 对二进制大型对象(BLOB)进行爬网

    本文是参考MSDN文档做的示例,SharePoint 2013搜索二进制对象(BLOB),通过外部内容类型的方式将外部数据与SharePoint相关联,修改BCD模型,使SharePoint能够爬网外 ...

最新文章

  1. 三分钟,了解PLM真谛
  2. 程序员法律考试(7)-民法(4)
  3. VTK:相互作用之StyleSwitch
  4. HDU-2829 Lawrence (DP+四边形不等式优化)
  5. 去重 属性_面试中常问的List去重问题,你都答对了吗?
  6. Git笔记(2) 入门认知
  7. SOCKET聊天室字符界面版
  8. w ndows8系统没有声音怎么,Windows 8.1 系统新装没有声音
  9. jmeter分布式步骤
  10. java中的ioc和aop_IOC和AOP分别是什么?如何理解?
  11. 推荐大家一个github上好的电子签名
  12. jQuery实现一个备忘录
  13. 熵权法stata程序
  14. ip 检测原理(简单粗暴ping ip)
  15. Qt--QVariant
  16. Nature Medicine 揭示冠状动脉疾病的个体危险因素
  17. 青少年学习机器人教育的收获
  18. 拜读近五年UT Austin Villa发表的RoboCup仿真3D论文
  19. moment时间插件设置显示日期为周一到周日
  20. 如何从小白起步成为百万博主|配音运营工具必不可少

热门文章

  1. idea中Gitlab项目导入导出
  2. 计算机在轻化工程中的应用,计算机在轻化工程专业中的应用-中国大学mooc-题库零氪...
  3. 语言 高速公路超速处罚_重磅!全国高速将统一限速,这4种超速不再扣分罚款!【饮茶论道】...
  4. python大神交流网站_学习Python必去的8个网站
  5. linux-basic(7)linux文件与目录管理
  6. JVM内存结构分析:为什么需要S0和S1?
  7. javadoc提取工具_使JavaDoc保持最新状态的工具
  8. wxpay-api:pay_J2Pay – API响应
  9. cuba开发_使用CUBA进行开发–与Spring相比有很大的转变?
  10. react 事件处理_在React中处理事件