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