我使用hbase作为apachenutch爬网数据的存储。我的存储位置在path/data/hbase/webpage中,在那里我可以看到许多文件夹,如:
64b2feb30073eec24d9dba65d421e7f
482062bc554bd45bf198d9edea971a30
7c8a6eec12d9f6926a1d912be9a0ca81
c1f682541b8d1c0559de6df14ae84e2b
083b28ee75babc718cc28e66b98c9ff5
809eb4bb5f2be087e2c84a2f51d26653
还有更多。。。
这些文件夹包含其他文件夹,如:
f h il mk mtdt ol p recovered.edits s
但这并不重要。
我正在为nutch编写自己的索引器,以便从hbase到solr获取爬网数据。我需要把它分批放到solr中,因为当我运行它时,我得到了内存异常。
我想问您是否可以从我的hbase存储中获取批ID(知道我有哪些批ID,然后我可以将其发送到索引)。
1条答案
按热度按时间a6b3iqyw1#
我不知道您是如何尝试实现您的解决方案的:如果作为一个nutch插件、一个hadoop mapreduce或一个进程脚本,但我猜这些信息将非常有用:
如nutch src/conf/gora-hbase-mapping.xml所示,batchidMap到hbase的列
f:bid
.你必须用gora来读。的示例
WebPage
有办法吗#getBatchId()
. 检查avro网页定义和编译的类。在开发插件时,很可能会看到
WebPage
插件接口中的参数。如果你想访问
batchId
在hbase中,以一种原始的方式,只需阅读该列f:bid
把它当作原始文本。如果我没有错的话,gora并没有在字符串上编写额外的信息(不像序列化时)。