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

cassandra使用心得

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

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

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

相关文章

java 北理工 教材_北理工《Java技术与应用》在线作业

北理工《Java技术与应用》在线作业可以代做所有奥鹏平台的作业、小论文、毕业论文、离线作业、考核作业、在线作业、在线测试&#xff0c;有需要的请联系本人一、单选题(共 20 道试题&#xff0c;共 40 分。)V1. Socket对象中____函数获取远程端口。A. getPort( )B. getLocalPo…

占用内存的Enum.values()方法

我是Java 枚举的忠实拥护者 。 似乎我们一直在等待获得它&#xff0c;但是当我们最终获得它&#xff08; J2SE 5 &#xff09;时&#xff0c;该枚举比C和C 提供的枚举要好得多&#xff0c;在我看来&#xff0c;这“ 值得等待” 。 与Java enum一样好&#xff0c;它也不是没有问…

Apache Spark Job的剖析

Apache Spark是通用的大规模数据处理框架。 了解spark如何执行作业对于获取大部分作业非常重要。 关于Spark评估范式的简短回顾&#xff1a;Spark使用的是惰性评估范式&#xff0c;在该范式中&#xff0c;Spark应用程序在驱动程序调用“ Action”之前不会执行任何操作。 惰性…

scala本地调试_如何编写自己的Java / Scala调试器

scala本地调试在本文中&#xff0c;我们将探讨Java / Scala调试器的编写和工作方式。 诸如Windows的WinDbg或Linux / Unix的gdb之类的本机调试器通过操作系统直接提供给它们的钩子来获取其功能&#xff0c;以监视和操纵外部进程的状态。 JVM充当OS之上的抽象层&#xff0c;它提…

java content()_Java contentEquals() 方法

全屏Java contentEquals() 方法contentEquals() 方法用于将将此字符串与指定的 StringBuffer 比较。语法public boolean contentEquals(StringBuffer sb)参数sb -- 要与字符串比较的 StringBuffer。返回值如字符串与指定 StringBuffer 表示相同的字符序列&#xff0c;则返回 tr…

java 加法 溢出_StackOverflow热帖:Java整数相加溢出怎么办?Java8一步搞定~

阅读本文大概需要 2 分钟。作者&#xff1a;Aaron_涛问题在之前刷题的时候遇见一个问题&#xff0c;需要解决int相加后怎么判断是否溢出&#xff0c;如果溢出就返回Integer.MAX_VALUE解决方案JDK8已经帮我们实现了Math下&#xff0c;不得不说这个方法是在StackOverflow找到了的…

通过这5个简单的技巧减少GC开销

编写代码的五种简单方法&#xff0c;可提高内存效率&#xff0c;而无需花费更多时间或降低代码可读性 垃圾回收会为您的应用程序增加多少开销&#xff1f; 您可能不知道确切的数字&#xff0c;但您确实知道总有改进的余地。 尽管自动GC是最有效的过程&#xff0c;但是如果它过…

xml 数字签名 破解_JAVA中带有数字签名的XML安全性

xml 数字签名 破解介绍 如您所知&#xff0c;XML在我们的产品或项目开发中起着重要作用&#xff0c;并且从XML文档中我们收集了很多信息&#xff0c;并且我们可以对XML文件执行CRUD操作。 但是&#xff0c;关于如何确保XML文件中可用的数据是真实的以及数据来自受信任的可靠来源…

centos 远程安装java程序_centos7远程服务器中redis的安装与java连接

1.下载安装redis在远程服务器中你想下载的位置执行以下命令来下载redis文件到服务器中$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz说明&#xff1a;$是指你的当前目录&#xff0c;不是命令的一部分&#xff0c;wget命令用来下载网上资源&#xff0c;后面的地…

内部简单二进制编码(SBE)

SBE是用于金融行业的非常快速的序列化库&#xff0c;在本博客中&#xff0c;我将介绍一些使其快速发展的设计选择。 序列化的全部目的是对消息进行编码和解码&#xff0c;并且有很多可用的选项&#xff0c;从XML&#xff0c;JSON&#xff0c;Protobufer&#xff0c;Thrift&…

mingw64 下 java_在 Windows 10 64 位下安装 Mingw-w64

1、MinGW 的全称是&#xff1a;Minimalist GNU on Windows 。打开网址&#xff1a;http://www.mingw-w64.org/doku.php/download &#xff0c;选择 MingW-W64-builds。如图1图12、下载包名&#xff1a;mingw-w64-install.exe。安装时报错&#xff1a;Cannot download repositor…

java实现layui分页_layui如何实现数据分页功能

我们先来看下官网的演示画面。具体代码&#xff1a;页面引入layui.css、 layui.js前台jsvar limitcount 10;var curnum 1;//列表查询方法function productsearch(productGroupId,start,limitsize) {layui.use([table,laypage,laydate], function(){var table layui.table,la…

java 正则表达式使用_如何用正则表达式杀死Java

java 正则表达式使用我们最近偶然发现了一个我们绝对不了解的现象&#xff1a;您可以使用简单的正则表达式杀死任何Java IDE以及任何Java进程… 回到大学后&#xff0c;我被告知正则表达式&#xff08;称为正则语法或3型语法&#xff09;总是以有限状态的自动机结束&#xff0…

java 合并到一行_mysql中将多行数据合并成一行数据

一个字段可能对应多条数据&#xff0c;用mysql实现将多行数据合并成一行数据例如&#xff1a;一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句&#xff1a;1 SELECT am.activeId,m.modelName2 FROM activemodel am3 JOIN model m4 ON am.modelId m.modelId5…

容器化Spring Data Cassandra应用程序

我正在继续学习Docker的旅程。 在这一点上&#xff0c;我仍然保持简单。 这次&#xff0c;我将解决将Spring和Cassandra应用程序转换为使用容器而不是在主机上本地运行的问题。 更准确地说&#xff0c;使用Spring Data Cassandra整理应用程序。 我希望我前几天看过进行此更改。…

最快的 java 图像_ImageJ 1.53 世界上最快的Java图像处理程序

ImageJ 1.53 世界上最快的Java图像处理程序 已通过小编安装运行测试 100%可以使用。ImageJ 1.53 是世界上最快的纯Java图像处理程序。它可以在0.1秒内过滤2048x2048图像。每秒可以处理4000万像素的图片。ImageJ支持处理8位灰度或索引颜色&#xff0c;16位无符号整数&#xff0c…

java字节码提取if语句_终于找到了!有了它你就可以读懂字节码了!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼0x80 ior 将栈顶两int型数值作“按位或”并将结果压入栈顶0x81 lor 将栈顶两long型数值作“按位或”并将结果压入栈顶0x82 ixor 将栈顶两int型数值作“按位异或”并将结果压入栈顶0x83 lxor 将栈顶两long型数值作“按位异或”并将结…

maven设置代理服务器_使用Maven设置您的应用服务器

maven设置代理服务器在许多情况下&#xff0c;无需事先设置应用程序就无法部署应用程序。 在JBoss AS 7.x中&#xff0c;您可能需要配置例如数据库连接。 或者&#xff0c;您必须配置一个安全领域。 也许您还想调整SLSB池…在任何情况下&#xff0c;团队中的所有开发人员都必须…

java编程中的di是什么_java-在Spring IoC / DI中使用@Component注释对接口...

在Spring类中,通常使用Component注释接口,特别是对于某些Spring构造型注释&#xff1a;package org.springframework.stereotype;...Componentpublic interface Service {...}要么 &#xff1a;package org.springframework.boot.test.context;...Componentpublic interface Te…

使用React和Spring Boot构建一个简单的CRUD应用

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 React的设计使创建交互式UI变得轻松自如。 它的状态管理非常有效&#xff0c;并且仅在…