Scénario : Ecrire des informations concernant des acteurs et des films dans Neo4j avec des relations hiérarchiques - 6.1

Composants Talend Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
Talend Real-Time Big Data Platform
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Ce scénario décrit un Job important des informations concernant des acteurs et des films depuis deux fichiers CSV dans une base de données Neo4j distante et créant une relation entre les acteurs et les films, selon un autre fichier CSV décrivant le rôle des acteurs dans ces films.

Construire le Job

  1. Créez un Job et ajoutez les composants suivants au Job en saisissant leur nom dans l'espace de modélisation graphique ou en les déposant depuis la Palette :

    • un tNeo4jConnection, pour ouvrir une connexion à une base de données Neo4j,

    • trois tFileInputDelimited, pour lire les informations d'entrée concernant les acteurs et les films,

    • deux tNeo4jOutput, pour écrire des informations concernant les films et les acteurs dans la base de données Neo4j connectée,

    • un tNeo4jOutputRelationship, pour créer une relation entre les acteurs et les films, et

    • un tNeo4jClose, pour fermer la connexion précédente à Neo4j après l'exécution du Job.

  2. Reliez le premier tFileInputDelimited au premier tNeo4jOutput à l'aide d'un lien Row > Main. Ce sous-job importe les acteurs dans la base de données Neo4j.

  3. Connectez le second tFileInputDelimited au second tNeo4jOutput à l'aide d'un lien Row > Main. Ce sous-job importe les films dans la base de données Neo4j.

  4. Reliez le troisième tFileInputDelimited au tNeo4jOutputRelationship à l'aide d'un lien Row > Main. Ce sous-job crée une relation entre les acteurs et les films.

  5. Reliez les sous-jobs à l'aide de liens Trigger > On Subjob Ok.

  6. Renommez les composants afin de mieux identifier leur rôle au sein du Job.

Configurer les composants

Ouvrir une connexion à une base de données Neo4j

  1. Double-cliquez sur le composant tNeo4jConnection pour ouvrir sa vue Basic settings.

  2. Dans la liste DB Version, sélectionnez Neo4J 2.X.X pour activer le libellé des nœuds.

  3. Cochez la case Use a remote server et spécifiez l'URL du serveur Neo4j dans le champ Server URL, "http://localhost:7474/db/data" dans cet exemple.

Importer les données des acteurs dans Neo4j

  1. Double-cliquez sur le premier tFileInputDelimited pour ouvrir la vue Basic settings.

  2. Dans le champ File name/Stream, spécifiez le chemin d'accès au fichier CSV décrivant le nom des acteurs, leur année de naissance et leur rôle dans ces films.

    Le fichier CSV d'entrée utilisé dans cet exemple se présente comme suit :

    Name;Born
    Keanu Reeves;1964
    Laurence Fishburne;1961
    Carrie-Anne Moss;1967
  3. Dans le champ Header, spécifiez le nombres de lignes d'en-tête à ignorer. Dans cet exemple, la première ligne du fichier CSV est la ligne d'en-tête, saisissez donc 1.

  4. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir la boîte de dialogue [Schema] et définissez le schéma d'entrée, à partir de la structure du fichier d'entrée. Dans cet exemple, le schéma d'entrée se compose de deux colonnes name et born, de type String.

    Cela fait, cliquez sur OK pour fermer la boîte de dialogue [Schema] et propager le schéma au composant suivant.

  5. Double-cliquez sur le premier tNeo4jOutput pour ouvrir sa vue Component.

  6. Cochez la case Use an existing connection pour réutiliser la connexion à la base de données Neo4j définie par le tNeo4jConnection, seul composant de connexion utilisé dans cet exemple.

  7. Double-cliquez sur le tNeo4jOutput ou cliquez sur le bouton Mapping de la vue Basic settings du composant, pour ouvrir l'éditeur d'index et de mapping de relations.

  8. Sélectionnez la colonne name, dans le schéma, et cliquez sur l'onglet Index creation, puis sur le bouton [+] pour ajouter une ligne à la table. Créez un index nommé name dans cette colonne :

    • Dans le nom Name, saisissez name entre guillemets doubles.

    • Dans le champ Key, saisissez name entre guillemets doubles pour donner une clé à l'index name.

    Cliquez dans le panneau du schéma afin de valider votre création d'index puis cliquez sur OK pour fermer l'éditeur de mapping.

  9. Cochez la case Use label (Neo4j > 2.0) et saisissez Actors entre guillemets doubles dans le champ Label name, afin que les nœuds créés soit libellés Actors.

Importer les données des films dans Neo4j

  1. Double-cliquez sur le second tFileInputDelimited pour ouvrir sa vue Basic settings.

  2. Dans le champ File name/Stream, spécifiez le chemin d'accès au fichier CSV contenant les informations des films.

    Le fichier CSV d'entrée utilisé dans cet exemple se présente comme suit :

    Title;Released;Tagline
    The Matrix;03-31-1999;Welcome to the Real World
    The Matrix Reloaded;05-07-2003;Free Your Mind
    The Matrix Revolutions;10-27-2003;Everything that has a Beginning has an End
  3. Dans le champ Header, spécifiez le nombre de lignes d'en-tête à ignorer. Dans cet exemple, l'en-tête est la première ligne du fichier CSV.

  4. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir la boîte de dialogue [Schema] et définissez le schéma d'entrée selon la structure du fichier d'entrée. Dans cet exemple, le schéma d'entrée se compose de trois colonnes, title (de type String), released (de type Date) et tagline (de type String).

    Cliquez sur OK pour ouvrir la boîte de dialogue [Schema] et propagez le schéma au composant suivant.

  5. Double-cliquez sur le second tNeo4jOutput pour ouvrir sa vue Component.

  6. Cochez la case Use an existing connection afin de réutiliser la connexion à la base de données Neo4j ouverte par le composant tNeo4jConnection, seul composant de connexion utilisé dans cet exemple.

  7. Double-cliquez sur le composant tNeo4jOutput ou cliquez sur le bouton Mapping de la vue Basic settings pour ouvrir l'éditeur d'index et de mapping de relations.

  8. Sélectionnez la colonne title dans le schéma, cliquez sur l'onglet Index creation, cliquez sur le bouton [+] pour ajouter une ligne à la table, puis créez un index nommé title dans cette colonne :

    • Dans le champ Name, saisissez title entre guillemets doubles.

    • Dans le champ Key, saisissez title entre guillemets doubles pour donner une clé à l'index.

    Cliquez dans le panneau du schéma pour valider votre création d'index, puis cliquez sur OK pour fermer l'éditeur de mapping.

  9. Cochez la case Use label (Neo4j > 2.0) et saisissez Movies entre guillemets doubles dans le champ Label name, pour que les nœuds créés aient le libellé Movies.

Créer la relation acteur-film dans Neo4j

  1. Double-cliquez sur le troisième tFileInputDelimited pour ouvrir sa vue Basic settings.

  2. Dans le champ File name/Stream, spécifiez le chemin d'accès au fichier CSV décrivant le rôle des acteurs dans les films.

    Le fichier d'entrée CSV utilisé dans cet exemple se présente comme suit :

    Actor;Movie;Role
    Keanu Reeves;The Matrix;Neo
    Keanu Reeves;The Matrix Reloaded;Neo
    Keanu Reeves;The Matrix Revolutions;Neo
    Laurence Fishburne;The Matrix;Morpheus
    Laurence Fishburne;The Matrix Reloaded;Morpheus
    Laurence Fishburne;The Matrix Revolutions;Morpheus
    Carrie-Anne Moss;The Matrix;Trinity
    Carrie-Anne Moss;The Matrix Reloaded;Trinity
    Carrie-Anne Moss;The Matrix Revolutions;Trinity
  3. Dans le champ Header, spécifiez le nombre de lignes d'en-tête à ignorer. Dans cet exemple, la première ligne du fichier CSV est la ligne d'en-tête.

  4. Cliquez sur le bouton [...] à côté du chhamp Edit schema pour ouvrir la boîte de dialogue [Schema] et définissez le schéma d'entrée à partir de la structure du fichier d'entrée. Dans cet exemple, le schéma d'entrée se compose de trois colonnes, actor, movie et role, de type String.

    Cliquez sur OK pour fermer la boîte de dialogue [Schema] et propager le schéma au composant suivant.

  5. Double-cliquez sur le tNeo4jOutputRelationship pour ouvrir sa vue Basic settings.

  6. Cochez la case Use an existing connection pour réutiliser la connexion à la base de données Neo4j ouverte par le composant tNeo4jConnection, seul composant de connexion utilisé dans cet exemple.

  7. Dans le champ Relationship type, saisissez le type de relation à créer, entre guillemets doubles. Dans cet exemple, le type de relation est ACTED_IN (a joué dans), qui apparaît comme libellé des relations entre les nœuds.

  8. Définissez les nœuds d'entrée et de sortie, ainsi que la direction de la relation à créer. Dans cet exemple, la relation est créée à partir du nœud Actors, sur lequel un index nommé name a été défini, vers le nœud Movies, sur lequel un index nommé title a été défini.

    • Start node : saisissez name entre guillemets doubles dans les champs Index name et Index key, puis sélectionnez la colonne name du schéma, dans la liste Index value. Comme le champ Value est laissé vide durant la création de l'index, la valeur de l'index est la valeur de la colonne name pour chaque ligne.

    • Dans la liste Relationship direction, sélectionnez Outgoing.

    • End node : saisissez title entre guillemets doubles dans les champs Index name et Index key, puis sélectionnez la colonne title du schéma, dans la liste Index value. Comme le champ Value est laissé vide durant la création de l'index, la valeur de l'index est la valeur de la colonne title pour chaque ligne.

  9. Cliquez trois fois sur le bouton [+] pour ajouter trois lignes à la table Mapping, afin de définir les trois propriétés de la relation :

    • Actor, sa valeur provient de la colonne actor du schéma,

    • Movie, sa valeur provient de la colonne movie du schéma,

    • Role, sa valeur provient de la colonne role du schéma.

Exécuter le Job et vérifier les résultats

  1. Appuyez sur les touches Ctrl+S pour sauvegarder le Job et appuyez sur F6 ou cliquez sur le bouton Run de la vue Run pour l'exécuter.

  2. Dans la barre d'adresse de votre navigateur Web, saisissez l'URL de la base de données Neo4j, http://localhost:7474/ dans cet exemple. Saisissez la requête Cypher suivante dans l'invite de commande afin de visualiser les nœuds et les relations entre eux.

    MATCH (a)-[:`ACTED_IN`]->(b) RETURN a,b;

    Comme vous pouvez le voir dans le graphique, les nœuds Actors sont reliés aux nœuds Movies par la relation ACTED_IN, avec les propriétés définies dans le Job.