2012-07-23 2 views
2

J'ai une énorme quantité de données à indexer et cela a pris plus de 10 heures pour faire le travail. Y a-t-il un moyen de le faire sur hadoop? Quelqu'un a déjà fait ça? Merci beaucoup!Exécution de l'index solr sur hadoop

+0

similaires (après que vous mettez vos données dans Hadoop cela se résume au même problème): http://stackoverflow.com/questions/11548357/searching-over-documents-stored-in-hadoop- quel-outil-à-utiliser –

Répondre

3

Vous n'avez pas expliqué où prend 10h? Est-ce qu'il faut pour extraire les données? ou faut-il simplement indexer les données.

Si vous prenez beaucoup de temps lors de l'extraction, vous pouvez utiliser hadoop. Solr a une fonctionnalité appelée insert en vrac. Ainsi, dans votre fonction de carte, vous pouvez accumuler 1000s d'enregistrement et valider pour l'index dans un seul coup pour résoudre un grand nombre de recods. Cela permettra d'optimiser votre performance.

De quelle taille sont vos données?

Vous pouvez collecter un grand nombre d'enregistrements dans la fonction de réduction de la tâche de mappage/réduction. Vous devez générer des clés correctes dans votre carte afin qu'un grand nombre d'enregistrements passe à la fonction de réduction unique. Dans votre classe reduce personnalisée, initialisez l'objet solr dans la méthode setup/configure, en fonction de votre version de hadoop, puis fermez-le dans la méthode cleanup. Vous devrez créer un objet collection de documents (dans solrNet ou solrj) et les valider tous coup unique.

Si vous utilisez hadoop, il existe une autre option appelée katta. Vous pouvez regarder par-dessus.

+0

Merci beaucoup, Animesh! L'heure était principalement l'indexation des données, puisque j'ai traité les données avant d'exécuter un programme Java pour appeler solr sur http. Et ce programme fonctionnait sur la même machine que le serveur solr. Peut-être que je devrais vérifier avec l'insertion en vrac? ... – trillions

+0

ouais je l'ai fait avant et l'insertion en bloc réduira vraiment beaucoup de temps. –

+0

Merci beaucoup, Animesh! Et les données que j'ai sont plus de 20 millions. Juste pour confirmer, pour l'insertion en vrac, vous vouliez "continuer à ajouter doc" et une fois frappé comme 1000 enregistrements, puis faire un commit, non? – trillions

0

Vous pouvez écrire un travail de réduction de carte sur votre cluster hadoop qui prend simplement chaque enregistrement et l'envoie à solr sur http pour l'indexation. Afaik solr n'a actuellement pas d'indexation sur un cluster de machines, il serait donc utile de chercher dans la recherche élastique si vous voulez distribuer votre index aussi sur plusieurs nœuds.

Questions connexes