SOLR - Meilleure approche pour importer 20 millions de documents à partir d'un fichier csv
Ma tâche actuelle est de trouver la meilleure approche pour charger des millions de documents dans solr.
Le fichier de données est une exportation à partir de DB au format csv.
Actuellement, je suis en réflexion sur le fractionnement du fichier en fichiers plus petits et d'avoir un script tout poste de cette les plus petits à l'aide de curl.
J'ai remarqué que si u post grande quantité de données, la plupart du temps la demande.
Je suis à la recherche dans les Données de l'importateur, et elle semble être une bonne option
Toutes les autres idées très apprécié
Grâce
source d'informationauteur Bobby ...
Vous devez vous connecter pour publier un commentaire.
À moins qu'une base de données est déjà partie de votre solution, je ne voudrais pas ajouter de la complexité supplémentaire à votre solution. Citant le SOLR FAQ c'est votre conteneur de servlet qui émet la durée d'une session.
Comme je le vois, vous avez quelques options (Dans mon ordre de préférence):
Augmentation conteneur délai
Augmenter le conteneur de délai d'attente. ("maxIdleTime" paramètre, si vous êtes à l'aide de l'embedded Jetée exemple).
Je suis en supposant que vous avez seulement à l'occasion de l'indice de tels fichiers volumineux? En augmentant le temps de sortir temporairement peut-être plus simple.
Diviser le fichier
Voici la simple script unix qui fera le travail (division du fichier dans la ligne de 500 000 morceaux):
Analyser le fichier et le charger en morceaux
Suivantes groovy script utilise opencsv et solrj pour analyser le fichier CSV et de valider les modifications apportées à Solr tous les 500 000 lignes.
Dans SOLR 4.0 (actuellement en BÊTA), CSV à partir d'un répertoire local peuvent être importées directement à l'aide de la UpdateHandler. Modification de l'exemple de le SOLR Wiki
Et ce transmet le fichier à partir de l'emplacement local, donc pas besoin de segmenter et de le POSTER via HTTP.
Réponses ci-dessus, ont expliqué vraiment bien l'ingestion des stratégies à partir d'une seule machine.
Peu plus d'options si vous avez de grandes données de l'infrastructure en place et souhaitez mettre en œuvre distribué ingestion de données pipeline.
de la ruche - solr connecteurspark - solr connecteur.
PS:
StandardDirectoryFactory
.autoCommit
etautoSoftCommit
de configuration danssolrconfig.xml
fichier.Certainement juste de les charger dans une base de données normale en premier. Il y a toutes sortes d'outils pour traiter ces volumes (par exemple, postgres' COPIE), il devrait donc être facile. À l'aide de Gestionnaire D'Importation Des Données est également assez simple, donc il semble que la plupart de frottement moyen gratuit pour charger vos données. Cette méthode sera aussi plus rapide puisque vous n'avez pas inutile de réseau/HTTP généraux.
Le guide de référence dit
ConcurrentUpdateSolrServer
pourrait/devrait être utilisé pour les mises à jour en vrac.Documentation javadoc sont quelque peu incorrect (v 3.6.2v 4.7.0):
Il n'a pas de tampon indéfiniment, mais jusqu'à
int queueSize
qui est un paramètre du constructeur.