nutch抓取数据后生成的文件格式

nutch抓取数据后,生成五个文件夹:crawldb、index、indexs、linkdb和segments,这五个文件夹具体存放什么内容,前面文章里有解释,每个文件夹下,最后就是data和index文件

看了一下将segment目录导出文本数据的源码SegmentReader.java,发现要用到MapFile类,而MapFile类中又要用到SequenceFile

MapFile.java类是创建data和index的类,它主要是用SequenceFile.java中的内部类和方法进行读写操作,所以理解SequenceFile类是很重要的

SequeceFile是Hadoop API提供的一种二进制文件支持。这种二进制文件直接将<key, value>对序列化到文件中。

1.nutch爬虫中产生的文件一般存放都是这种结构,按照key进行排序,value存放信息,直接以文本形式打不开,每个文件目录下,都对应一个index和data,这两个文件是必须一起用还是可以分开用呢?

答:为了方便查看nutch抓取数据结果,nutch提供了导出命令,在执行dump命令时,即将数据以文本形式导出:

查看crawldb数据库,导出数据:bin/nutch readdb output/crawldb/ -dump crawldb(导出的地址)

这时候只用到data,可以不用index,index文件就是一个索引,例如:bin/nutch readseg -get  output/segments/20110727060701/  http://www.baidu.com/,这个命令是根据key(这里是http://www.baidu.com)获取value值,会直接将结果以文本形式打在终端,这个时候需要index,是根据它在data中查找value的

“index文件用来存放索引,但是这个索引文件也是一个有序的,这个里面存放的是key和位置信息,但是在data文件中出现的key在这个index中都能找到的,它为了节省空间,实施了每隔一段 key/value建立一条索引,这样在查找的时候,因为是有序的,所以采用2分查找,如果找不到,则返回最后时候的最小的位置信息,这个位置离我们要找的目标是相当近的,然后在data文件的这个位置向前找就可以很快找到了” ----详见参考资料1

nutch的导出命令详见参考资料3

2.因为nutch中产生的文件都是SequeceFile的,所以准备直接用它来作为输入,转成mahout的输入向量,用mahout提供的将SequeceFile文件转向量或导出文本时报错

把parse_text传到hdfs上,用mahout seq2sparse --input /user/temp --ouput /user/test/testdata 命令,提示报错,说找不到nutch.parse.parseText包

用mahout seqdumper -s /tmp/seq/data,也是提示没有nutch.parse.ParseText类,其中data是nutch的parse_text中的data

seqdumper是用来将SequenceFile格式转成可看的文本格式的

seq2sparse 是用来将SequeceFile文件转成mahout向量文件的

难道说,mahout输入向量的生成必须是mahout命令转化的SequeceFile文件才行?

3.mahout kmeans输入参数

前面弄错了一个问题,那就是mahout入门测试的例子中,用的是mahout-examples-0.4-job.jar,数据集直接用的uci上的synthetic_control.data

如果是将lucene索引转成向量后,这时候不能用mahout-examples-0.4-job.jar去运行mahout kmeans,格式不一致,此时可以手动运行mahout kmeans -i /user/test/testdata -o /user/test/output -c /user/test/output/cluster -x 5
-i:是输入向量路径
-o:是输出路径
-c:初始输入质心,如果k指定了,就随机从输入向量中选定
-x:是最大迭代次数

可问题是将索引转成向量后,聚类结果也是向量形式,根本不知道原始文本是怎么聚在一起的啊?

 

参考资料:

1.http://blog.csdn.net/forwen/article/details/4804733

2.SequenceFile介绍 :http://blog.163.com/jiayouweijiewj@126/blog/static/17123217720101121103928847/

3.http://blog.163.com/bit_runner/blog/static/53242218201141393943980/

4.http://blog.163.com/jiayouweijiewj@126/blog/static/171232177201011475716354/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值