Comment puis-je réduire le temps de chargement de Neptune Bulk Loader ?

Dernière mise à jour : 09/10/2020

J' essaie de charger des données dans mon cluster Amazon Neptune en utilisant le Neptune Bulk Loader. Cependant, le processus prend plus de temps que prévu. Comment puis-je réduire le temps de chargement ?

Résolution

Classe d'instance

Définissez l'instance de l'enregistreur sur la taille maximale avant le chargement en bloc. Vous pouvez gérer différentes classes d'instances pour les enregistreurs et les lecteurs afin de vous assurer que vous ne mettez à l'échelle qu'un seul nœud dans le cluster Neptune. Lorsque le chargement en bloc est terminé, vous pouvez diminuer la taille de l'enregistreur.

Parallélisme

Si vous n'effectuez aucune autre opération au cours d'une écriture, utilisez le paramètre de parallélisme OVERSUBSCRIBE. Ce paramètre configure Neptune Bulk Loader pour qu'il utilise toutes les ressources disponibles, ce qui réduit le temps de chargement total.

Taille des fichiers et débit des demandes

Une bonne pratique consiste à utiliser des fichiers de chargement en bloc plus volumineux (tels que des fichiers .csv) dans votre compartiment Amazon Simple Storage Service (Amazon S3). Cela permet à l'API Bulk Loader de diviser ces fichiers volumineux et de gérer automatiquement la simultanéité. Si vous avez plusieurs fichiers, envisagez l'une des approches suivantes :

  • Configurer la source S3 en tant que dossier : l'API Bulk Loader démarre automatiquement avec les fichiers de sommet, puis télécharge les fichiers de périphérie par la suite.
  • Neptune peut charger des fichiers en parallèle, l'utilisation de plusieurs fichiers peut accélérer le processus de chargement.
  • Compresser les fichiers : l'API Bulk Loader prend en charge les fichiers gzip, ce qui peut réduire la surcharge de récupération de fichiers plus volumineux depuis votre compartiment S3.
  • Utilisez les paramètres de requête queueRequest et dependencies. Si le paramètre queueRequest est défini sur « TRUE », Neptune met plusieurs tâches en file d'attente simultanément. Vous pouvez configurer plusieurs niveaux de dépendance, de sorte que l'échec d'une tâche entraîne l'échec de toutes les tâches. Ce type de configuration de vos dépendances peut également permettre d'empêcher les incohérences dans vos données.

Par exemple, si les tâches Job-A et la Job-B sont indépendantes l'une de l'autre, définissez une tâche Job-C de sorte que Job-A et Job-B se terminent avant le début de Job-C. Soumettez les tâches Job-A et la Job-B l'une après l'autre (dans n'importe quel ordre) et enregistrez leurs identifiants de chargement. Ensuite, soumettez la tâche load-job-C avec les identifiants de chargement des deux tâches dans le champ dependencies (dépendances) :

"dependencies" : ["Job_A_loadID", "Job_B_loadID"]

En cas d'échec pour les tâches Job-A ou Job-B, Job-C ne s'exécute pas et son état est défini sur LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED (Échec du chargement car la dépendance n'a pas été satisfaite).

Intégrité des données

  • Convertissez vos données dans un format de données de chargement pris en charge.
  • Gérez vos données avec updateSingleCardinalityProperties. Par exemple, si vous disposez d'un sommet pour une Personne et que vous souhaitez modifier le numéro de téléphone, Neptune Bulk Loader rejette la modification. La nouvelle valeur est traitée comme une erreur. Toutefois, si vous définissez updateSingleCardinalityProperties sur « TRUE », Neptune Bulk Loader remplace la valeur de cette propriété de sommet.
    Important : les en-têtes du fichier .csv doivent indiquer une cardinalité unique pour la propriété. Si la cardinalité et le contenu du paramètre updateSingleCardinalityProperties ne sont pas « uniques » ou à valeur unique, le paramètre ne fonctionnera pas. Pour plus d'informations, consultez la section Spécification de la cardinalité d'une colonne dans En-têtes de colonnes de propriétés.
  • Supprimez les doublons ou les erreurs connues des fichiers de chargement en bloc avant le début d'un chargement en bloc.
  • Réduisez le nombre de prédicats uniques (tels que les propriétés des périphéries et des sommets).

Comportement de la tâche de chargement

Vous pouvez utiliser le paramètre failOnError pour déterminer si les opérations de chargement en bloc doivent se poursuivre en cas d'erreur. Vous pouvez également utiliser le paramètre mode pour vous assurer que votre tâche de chargement reprend uniquement au niveau des fichiers pour lesquels le chargement a échoué initialement. Pour plus d'informations sur les paramètres mode et failOnError, consultez Paramètres de requête.

Dépannage des tâches Bulk Loader ayant échoué

Vous pouvez utiliser l'API Get-Status pour obtenir plus d'informations sur une tâche de chargement particulière. Utilisez la requête cURL suivante pour vérifier l'état d'intégrité et rechercher des erreurs dans Neptune Bulk Loader :

curl -s "https://neptune:8182/loader/<loaderid>?details=true&errors=true"

Pour plus d'informations sur le dépannage de Neptune Bulk Loader, consultez Comment résoudre les erreurs de traitement dans Amazon Neptune Bulk Loader ?


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?