我正在使用HBase作为Apache Nutch的爬行数据存储。我的存储位置在path / data / hbase / webpage中,在那里我可以看到很多文件夹,如:
64b2feb30073eec24d9dba65d421e7f
482062bc554bd45bf198d9edea971a30
7c8a6eec12d9f6926a1d912be9a0ca81
c1f682541b8d1c0559de6df14ae84e2b
083b28ee75babc718cc28e66b98c9ff5
809eb4bb5f2be087e2c84a2f51d26653
以及更多......
这些文件夹包含其他文件夹,如:
f h il mk mtdt ol p recovered.edits s
但它并不那么重要。
我正在为Nutch编写自己的索引器,以便将从HBase到Scr的爬行数据。我需要分批将它放到Solr中,因为当我运行它时,我得到OutOfMemory异常。
我想问你是否有可能从我的HBase存储中获取批处理ID(知道我有哪些批处理ID,然后我可以将它发送到索引)。
答案 0 :(得分:1)
我不知道你是如何尝试实现你的解决方案的:如果是Nutch插件,Hadoop MapReduce或单个进程脚本,但我想这些信息会有所帮助:
如nutch-src/conf/gora-hbase-mapping.xml所示,batchId已映射到HBase的列f:bid
。
你必须使用Gora阅读它。 WebPage
的实例使用方法#getBatchId()
。查看avro WebPage definition和compiled class。
开发插件时,很可能会在插件的界面中看到WebPage
参数。
如果您想以HBase 中的原始方式访问batchId
,请阅读f:bid
列并将其视为原始文本。如果我没有错,Gora不会写关于字符串的其他信息(与序列化时不同)。