3

我有大量数据需要编制索引,完成这项工作需要 10 多个小时。有没有办法在hadoop上做到这一点?以前有人做过吗?非常感谢!

4

3 回答 3

3

你还没有解释10小时在哪里?需要提取数据吗?还是只需要索引数据。

如果您需要很长时间进行提取,那么您可以使用 hadoop。Solr 有一个称为批量插入的功能。因此,在您的地图功能中,您可以一次性累积 1000 条记录并提交索引以获取大量记录。这将大大优化你的表现。

还有你的数据有多大?

您可以在 map/reduce 作业的 reduce 功能中收集大量记录。您必须在地图中生成正确的键,以便大量记录进入单个 reduce 函数。在您的自定义reduce类中,根据您的hadoop版本在setup/configure方法中初始化solr对象,然后在cleanup方法中关闭它。您必须创建一个文档集合对象(在solrNet或solrj中)并将它们全部提交到一个单发。

如果您使用 hadoop,还有其他选项称为katta。你也可以看看它。

于 2012-07-24T16:46:47.377 回答
0

您可以在您的 hadoop 集群上编写一个 map reduce 作业,该作业只需获取每条记录并通过 http 将其发送到 solr 以进行索引。Afaik solr 目前没有对机器集群的索引,因此如果您想将索引也分布在多个节点上,那么研究弹性搜索是值得的。

于 2012-07-24T04:50:48.173 回答
0

有一种 SOLR hadoop 输出格式,它在每​​个 reducer 中创建一个新索引,因此您可以根据所需的索引分配密钥,然后在事后将 hdfs 文件复制到您的 SOLR 实例中。

http://www.datasalt.com/2011/10/front-end-view-generation-with-hadoop/

于 2013-03-05T15:54:40.157 回答