我需要索引大量数据,完成工作需要10多个小时。有没有办法在hadoop上做到这一点?以前有人这样做过吗?非常感谢!
答案 0 :(得分:3)
你还没有解释10小时在哪里?是否需要提取数据?或只是索引数据。
如果您需要很长时间进行提取,那么您可以使用hadoop。 Solr有一个称为批量插入的功能。所以在你的map函数中你可以累积1000个记录并在一次性中提交索引以解决大量的recods。这将优化你的表现。
您的数据的大小是多少?
您可以在map / reduce作业的reduce函数中收集大量记录。您必须在地图中生成正确的密钥,以便大量记录转到单个reduce函数。在您的自定义reduce类中,根据您的hadoop版本初始化设置/配置方法中的solr对象,然后在清理方法中关闭它。您将必须创建一个文档集合对象(在solrNet或solrj中)并将所有这些对象提交到一个单枪。
如果您使用hadoop,还有其他选项称为katta。你也可以查看它。
答案 1 :(得分:0)
你可以在你的hadoop集群上编写一个map reduce工作,它只需要记录每条记录并通过http发送给solr进行索引。 Afaik solr目前没有对机器集群进行索引,因此如果您想在多个节点上分发索引,那么查看弹性搜索是值得的。
答案 2 :(得分:0)
有一个SOLR hadoop输出格式在每个reducer中创建一个新索引 - 所以你根据你想要的索引来分解你的密钥,然后在事后将hdfs文件复制到你的SOLR实例中。
http://www.datasalt.com/2011/10/front-end-view-generation-with-hadoop/