tRandomForestModel - 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

Avertissement

Ce composant est disponible dans la Palette si vous avez souscrit à un produit Talend Platform comprenant l'option Big Data.

Fonction

Le composant tRandomForestModel analyse des ensembles de données entrants en appliquant l'algorithme Random Forest.

Il génère un modèle de classification depuis cette analyse et écrit ce modèle soit dans la mémoire, soit dans un système de fichiers donné.

Objectif

Ce composant analyse des vecteurs de caractéristiques généralement pré-traités par le tModelEncoder afin de générer un modèle de classification utilisé par le tClassify pour classifier des éléments données.

Propriétés du tRandomForestModel dans des Jobs Spark Batch

Famille du composant

Machine Learning / Classification

 

Basic settings

Label column

Sélectionnez la colonne d'entrée utilisée pour fournir les libellés de classification. Les enregistrements de cette colonne sont utilisés comme noms de classes (cibles, en termes de classification) des éléments à classifier.

 

Feature column

Sélectionnez la colonne d'entrée utilisée pour fournir les caractéristiques. Très souvent, cette colonne est la sortie des calculs de l'algorithme Vector assembler effectués par le tModelEncoder.

 

Save the model on file system

Cochez cette case pour stocker le modèle dans un système de fichiers donné.

 

Number of trees in the forest

Saisissez le nombre d'arbres de décision que vous souhaitez que le tRandomForestModel construise.

Chaque arbre de décision est construit indépendamment à l'aide d'un échantillon aléatoire de caractéristiques.

L'incrémentation de ce nombre peut améliorer la précision en diminuant les variations des prédictions, mais augmente le temps d'apprentissage.

Maximum depth of each tree in the forest

Saisissez la profondeur de l'arbre de décision à laquelle la construction doit arrêter d'ajouter des nœuds. Les nouveaux nœuds représentent des tests plus avancés sur les caractéristiques des nœuds internes et des possibles libellés de classes contenus par les nœuds des feuilles.

Par exemple, la profondeur 1 signifie 1 nœud interne plus 2 nœuds de feuilles.

De manière générale, un arbre de décision plus profond est plus expressif et potentiellement plus précis dans ses prédictions, mais consomme également plus de ressources et est plus prompt au surapprentissage.

Advanced settings

Subsampling rate

Saisissez la valeur numérique pour indiquer la fraction de l'ensemble de données d'entrée utilisée pour l'apprentissage de chaque arbre de la forêt. La valeur par défaut 1.0 est recommandée, ce qui signifie que l'ensemble de données complet est utilisé à des fins de test.

 

Subset strategy

Sélectionnez la stratégie concernant le nombre de caractéristiques devant être considérées sur chaque nœud interne pour diviser de manière appropriée ce nœud interne (l'ensemble d'apprentissage ou le sous-ensemble d'une caractéristique de ce nœud) en de plus petits sous-ensembles. Ces sous-ensembles sont utilisés pour construire des nœuds enfants.

Chaque stratégie prend en compte un nombre différent de caractéristique pour trouver le point optimal parmi ces caractéristiques pour la division. Ce point, peut être, par exemple, l'âge 35 de la caractéristique catégorique age.

  • auto : cette stratégie se base sur le nombre d'arbres défini dans le champ Number of trees in the forest de la vue Basic settings. Cette stratégie est celle par défaut.

    Si le nombre d'arbre est 1, la stratégie est all. Si ce nombre est supérieur à 1, la stratégie est sqrt.

  • all : le nombre total de caractéristiques est considéré pour la division.

  • sqrt : le nombre de caractéristiques à considérer est la racine carrée du nombre total de caractéristiques.

  • log2 : le nombre de caractéristiques à considérer est le résultat de log2(M), dans lequel M est le nombre total de caractéristiques.

 

Max bins

Saisissez la valeur numérique indiquant le nombre maximal de bins utilisés pour diviser les caractéristiques.

Les caractéristiques continues sont automatiquement transformées pour trier les caractéristiques discrètes.

 

Min info gain

Saisissez le nombre minimal de gain d'informations à attendre d'un nœud parent vers ses nœuds enfants. Lorsque le gain d'informations est inférieur à ce nombre minimal, la division du nœud est arrêtée.

La valeur par défaut du nombre minimal de gain d'informations est 0.0, ce qui signifie qu'aucune autre informations n'est obtenue en divisant un nœud donné. Par conséquent, la division peut être arrêtée.

Pour plus d'informations concernant le calcul du gain d'informations, consultez Impurity and Information gain dans la documentation Spark (en anglais).

 

Min instances per node

Saisissez le nombre minimal d'instances d'apprentissage qu'un nœud doit avoir pour qu'il soit valide pour une division ultérieure.

La valeur par défaut est 1, ce qui signifie que, lorsqu'un nœud contient seulement 1 ligne de données d'apprentissage, sa division s'arrête.

 

Impurity

Sélectionnez la mesure utilisée pour obtenir la meilleure division de chaque ensemble de divisions.

  • gini : fréquence à laquelle un élément peut être nommé de manière incorrecte dans une division.

  • entropy : combien peuvent être imprévisibles les informations dans chaque division.

Pour plus d'informations concernant le calcul des mesures, consultez Impurity measures dans la documentation Spark (en anglais).

 

Set a random seed

Saisissez le numéro de graine aléatoire à utiliser pour le bootstrapping et choisissez les sous-ensembles de caractéristiques.

Utilisation dans des Jobs Spark Batch

Dans un Job Talend Spark Batch, ce composant est utilisé en tant que composant de fin et requiert un lien d'entrée. Les autres composants utilisés avec lui doivent également être des composants Spark Batch. Ils génèrent nativement du code Spark pouvant être directement exécuté dans un cluster Spark.

Vous pouvez accélérer le processus d'apprentissage en ajustant les conditions d'arrêt, comme la profondeur maximale de chaque arbre de décision, le nombre maximal de bins de division ou le nombre minimum de gain d'informations, mais notez que si l'apprentissage s'arrête trop tôt, cela peut avoir un impact sur ses performances.

Évaluation du modèle

les paramètres que vous devez configurer sont des paramètres libres. Leur valeur peut être fournie par des essais, des suppositions empiriques ou autres. Ils n'ont pas de valeur optimale applicable à tous les ensembles de données.

Vous devez apprendre le modèle de classification que vous générez avec différents ensembles de valeurs de paramètres jusqu'à ce que vous obteniez la meilleure matrice de confusion.

Vous devez sélectionner les scores à utiliser selon l'algorithme à utiliser pour apprendre votre modèle de classification. Cela vous permet de construire la matrice de confusion la plus pertinente.

Pour des exemples concernant comment utiliser une matrice de confusion dans un Job Talend à des fins de classification, consultez Création d'un modèle de classification pour filtrer les spams.

Pour des explications générales relatives aux matrices de confusion, consultez les articles de Wikipédia suivants : https://fr.wikipedia.org/wiki/Matrice_de_confusion pour une version française et https://en.wikipedia.org/wiki/Confusion_matrix pour une version anglaise plus détaillée.

Spark Connection

Vous devez utiliser l'onglet Spark Configuration de la vue Run afin de définir la connexion à un cluster Spark donné pour le Job complet. De plus, puisque le Job attend ses fichiers .jar dépendants pour l'exécution, un (et un seul) composant relatif à un système de fichiers de la famille Storage est requis au sein du même Job, afin que Spark puisse utiliser ce composant pour se connecter au système de fichiers auquel les fichiers .jar dépendants du Job sont transférés :

Cette connexion fonctionne uniquement pour le Job dans lequel vous l'avez définie.

Log4j

Si vous utilisez une solution Talend soumise à souscription, l'activité de ce composant peut être journalisée avec la fonctionnalité log4j. Pour plus d'informations sur cette fonctionnalité, consultez le Guide utilisateur du Studio Talend.

Pour plus d'informations sur les niveaux de logs du log4j, consultez la documentation d'Apache : http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html (en anglais).

Création d'un modèle de classification pour filtrer les spams

Dans ce scénario, vous allez créer des Jobs Spark Batch. Les composants clés sont à utiliser comme suit :

  • tModelEncoder : plusieurs composants tModelEncoder sont utilisés pour transformer des messages texte (SMS) en ensemble de caractéristiques.

  • tRandomForestModel : il analyse les caractéristiques entrantes depuis le tModelEncoder afin de construire un modèle de classification comprenant à quoi ressemblent un message indésirable et un message normal.

  • tClassify : dans un nouveau Job, il applique ce modèle de classification afin de traiter un nouvel ensemble de SMS pour classer les messages indésirables et les messages normaux. Dans ce scénario, les résultats de cette classification sont utilisés pour évaluer la précision du modèle, puisque la classification des messages traités par le tClassify est déjà connue et explicitement marquée.

  • Un composant de configuration comme le tHDFSConfiguration est utilisé dans chaque Job : ce composant est utilisé pour se connecter au système de fichiers auquel les fichiers .jar dépendants du Job seront transférés durant l'exécution du Job.

    Ce composant de configuration du système de fichiers est requis, sauf si vous exécutez votre Job en mode Local.

Prérequis :

  • Deux ensembles de messages texte SMS : l'un est utilisé pour apprendre des modèles de classification et l'autre est utilisé pour évaluer les modèles créés. Vous pouvez télécharger l'ensemble train (apprentissage) depuis trainingSet.zip et l'ensemble test depuis testSet.zip.

    Talend a créé ces deux ensembles à partir de l'ensemble de données téléchargeable depuis https://archive.ics.uci.edu/ml/datasets/SMS+Spam+Collection, en utilisant le Job dataSet_preparation pour ajouter trois colonnes de caractéristiques (nombre de symboles monétaires, nombre de valeurs et nombre de points d'exclamation) à l'ensemble de données brutes et diviser proportionnellement l'ensemble de données.

    Un exemple de message indésirable se présente comme suit :

    Free entry in 2 a wkly comp to win FA Cup final tkts 21st May 2005. Text FA to 87121 to receive entry question(std txt rate)T&C's apply 08452810075over18's

    Un exemple de message normal se présente comme suit :

    Ahhh. Work. I vaguely remember that! What does it feel like? Lol

    Notez que les nouvelles caractéristiques ajoutées à l'ensemble de données brutes sont le résultat de l'observation des messages indésirables utilisés spécifiquement dans ce scénario (ces messages indésirables contiennent souvent des prix et/ou des points d'exclamation) et ne peuvent être généralisés pour les messages indésirables que vous souhaitez analyser. De plus, l'ensemble de données a été divisé aléatoirement en deux ensembles de données et utilisé tel quel. Cependant, dans un cas d'utilisation réelle, vous pouvez continuer à pré-traiter ces données de différentes méthodes, comme en équilibrant les ensembles de données afin de mieux apprendre votre modèle de classification.

  • Les deux ensembles doivent être stockés sur la machine où le Job sera exécuté, par exemple dans le système HDFS de votre cluster YARN si vous utilisez le mode Yarn client de Spark pour exécuter des Jobs Spark Talend et que vous avez les droits et permissions appropriés, en lecture et écriture de données dans ce système.

    Dans ce scénario, le client Spark Yarn client est utilisé et les ensembles de données sont stockés dans la système HDFS associé.

  • Le cluster Spark à utiliser doit avoir été configuré correctement et être en cours d'exécution.

Création d'un modèle de classification à l'aide de Random Forest

Relier les composants
  1. Dans la perspective Integration du Studio, créez un Job vide Spark Batch, nommé rf_model_creation par exemple, depuis le nœud Job Designs de la vue Repository.

    Pour plus d'informations concernant la création d'un Job Spark Batch, consultez le Guide de prise en main du Studio.

  2. Dans l'espace de modélisation graphique, saisissez le nom du composant à utiliser et sélectionnez ce composant dans la liste qui s'affiche. Dans ce scénario, les composants sont les suivants : un tHDFSConfiguration, un tFileInputDelimited, un tRandomForestModel et quatre tModelEncoder.

    Il est recommandé de renommer les quatre composants tModelEncoder différemment afin de reconnaître d'un coup d'œil quelle tâche est effectuée par quel composant. Dans ce scénario, ils sont nommés, respectivement Tokenize, tf, tf_idf et features_assembler.

  3. Connectez tous les composants à l'aide de liens Row > Main, sauf le tHDFSConfiguration, comme dans la capture d'écran précédente.

Configurer la connexion au système de fichiers à utiliser par Spark
  1. Double-cliquez sur le tHDFSConfiguration pour ouvrir sa vue Component. Notez que le tHDFSConfiguration est utilisé car le mode Spark Yarn client est utilisé pour exécuter des Jobs Spark dans ce scénario.

    Spark utilise ce composant pour se connecter au système HDFS auquel sont transférés les fichiers .jar dépendants du Job.

  2. Dans la zone Version, sélectionnez la distribution Hadoop et la version à laquelle vous connecter.

  3. Dans le champ NameNode URI, saisissez l'emplacement de la machine hébergeant le service NameNode du cluster.

  4. Dans le champ Username, saisissez les informations d'authentification utilisée pour vous connecter au système HDFS à utiliser. Notez que le nom d'utilisateur doit être le même que celui saisi dans l'onglet Spark configuration.

Charger l'ensemble de données d'apprentissage dans le Job
  1. Double-cliquez sur le tFileInputDelimited pour ouvrir sa vue Component.

  2. Cochez la case Define a storage configuration component et sélectionnez le composant tHDFSConfiguration à utiliser.

    Le tFileInputDelimited utilise cette configuration pour accéder à l'ensemble d'apprentissage à utiliser.

  3. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir l'éditeur de schéma.

  4. Cliquez cinq fois sur le bouton [+] pour ajouter cinq lignes et, dans la colonne Column, renommez-les, respectivement label, sms_contents, num_currency, num_numeric et num_exclamation.

    Les colonnes label et sms_contents contiennent les données brutes composées de messages texte SMS dans la colonne sms_contents et les libellés indiquant si un message est indésirable dans la colonne label.

    Les autres colonnes sont utilisées pour contenir les caractéristiques ajoutées aux ensembles de données brutes, comme expliqué précédemment dans le scénario. Les caractéristiques sont respectivement le nombre de symboles monétaires, le nombre de valeurs numériques et le nombre de points d'exclamation trouvés dans chaque SMS.

  5. Dans la colonne Type, sélectionnez Integer pour les colonnes num_currency, num_numeric et num_exclamation.

  6. Cliquez sur OK pour valider vos modifications.

  7. Dans le champ Folder/File, saisissez le répertoire dans lequel l'ensemble d'apprentissage à utiliser est stocké.

  8. Dans le champ Field separator, saisissez \t, séparateur utilisé par les ensembles de données que vous pouvez télécharger et utiliser dans ce scénario.

Transformer des SMS en vecteurs de caractéristiques à l'aide du tModelEncoder

Cette étape implémente le processus de traitement des caractéristiques.

Transformer des messages en mots

  1. Double-cliquez sur le tModelEncoder nommé Tokenize pour ouvrir sa vue Component. Ce composant transforme les SMS en mots.

  2. Cliquez sur le bouton Sync columns afin de récupérer le schéma du composant précédent.

  3. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir l'éditeur du schéma.

  4. Du côté de la sortie, cliquez sur le bouton [+] pour ajouter une ligne et, dans la colonne Column, renommez-la sms_tokenizer_words. Cette colonne est utilisée pour contenir les messages transformés.

  5. Dans la colonne Type, sélectionnez Object pour la ligne sms_tokenizer_words.

  6. Cliquez sur OK pour valider ces modifications.

  7. Dans la table Transformations, ajoutez une ligne en cliquant sur le bouton [+] et en procédant comme suit :

    • Dans la colonne Input column, sélectionnez la colonne fournissant les données à transformer en caractéristiques. Dans ce scénario, sélectionnez sms_contents.

    • Dans la colonne Output column, sélectionnez la colonne contenant les caractéristiques. Dans ce scénario, sélectionnez sms_tokenizer_words.

    • Dans la colonne Transformation, sélectionnez l'algorithme à utiliser pour la transformation. Dans ce scénario, sélectionnez Regex tokenizer.

    • Dans la colonne Parameters, saisissez les paramètres que vous souhaitez personnaliser pour les utiliser dans l'algorithme sélectionné. Dans ce scénario, saisissez pattern=\\W;minTokenLength=3.

    En utilisant cette transformation, le tModelEncoder sépare chaque message d'entrée par des espaces blancs, sélectionne uniquement les mots contenant au moins trois lettres et écrit le résultat de la transformation dans la colonne sms_tokenizer_words. Les symboles monétaires, les valeurs numériques, les signes de ponctuation et les mots comme a, an ou to sont exclus de cette colonne.

Calculer le poids d'un mot dans chaque message

  1. Double-cliquez sur le tModelEncoder nommé tf pour ouvrir sa vue Component.

  2. Répétez les opérations décrites précédemment dans la configuration du tModelEncoder nommé Tokenizer pour ajouter la colonne sms_tf_vect de type Vector dans le schéma de sortie et définissez la transformation comme dans l'image ci-dessus.

    Dans cette transformation, le tModelEncoder utilise HashingTF pour convertir les SMS transformés en vecteurs de caractéristiques de longueur fixe (15 dans ce scénario) afin de refléter l'importance d'un mot dans chaque SMS.

Réduire le poids des mots sans importance dans chaque message

  1. Double-cliquez sur le composant tModelEncoder nommé tf_idf pour ouvrir sa vue Component. Dans ce processus, le tModelEncoder réduit le poids des mots apparaissant très souvent mais dans de trop nombreux messages, car un mot de ce genre n'apporte généralement pas d'information utile lors d'une analyse de texte, comme le mot the.

  2. Répétez les opérations précédemment décrites durant la configuration du tModelEncoder nommé Tokenizer pour ajouter la colonne sms_tf_idf_vect de type Vector au schéma de sortie et définir la transformation comme affiché dans l'image ci-dessus.

    Dans cette transformation, le tModelEncoder utilise Inverse Document Frequency pour réduire le poids des mots apparaissant dans cinq messages ou plus.

Combiner les vecteurs de caractéristiques

  1. Double-cliquez sur le tModelEncoder nommé features_assembler pour ouvrir sa vue Component.

  2. Répétez les opérations décrites précédemment durant la configuration du tModelEncoder nommé Tokenizer pour ajouter la colonne features_vect de type Vector au schéma de sortie et définir la transformation comme affiché dans l'image ci-dessus.

    Notez que le paramètre à mettre dans la colonne Parameters est inputCols=sms_tf_idf_vect,num_currency,num_numeric,num_exclamation.

    Dans cette transformation, le tModelEncoder combine tous les vecteurs de caractéristiques en une colonne de caractéristiques.

Apprendre le modèle à l'aide de Random Forest
  1. Double-cliquez sur le tRandomForestModel pour ouvrir sa vue Component.

  2. Dans la liste Label column, sélectionnez la colonne fournissant les classes à utiliser pour la classification. Dans ce scénario, sélectionnez label, qui contient deux noms de classes : spam pour les messages indésirables et ham pour les messages normaux.

  3. Dans la liste Features column, sélectionnez la colonne fournissant les vecteurs de caractéristiques à analyser. Dans ce scénario, sélectionnez features_vect, qui combine toutes les caractéristiques.

  4. Cochez la case Save the model on file system et, dans le champ HDFS folder qui s'affiche, saisissez le répertoire à utiliser pour stocker le modèle généré.

  5. Dans le champ Number of trees in the forest, saisissez le nombre d'arbres de décision que vous souhaitez que le tRandomForestModel construise. Vous devez essayer différents nombres pour exécuter le Job courant afin de créer plusieurs fois le modèle de classification. Après comparaison des résultats d'évaluation de chaque modèle créé à chaque exécution, vous pouvez décider du nombre à utiliser. Dans ce scénario, saisissez 20.

    Un Job d'évaluation sera présenté dans l'une des sections suivantes.

  6. Laissez les autres paramètres tels qu'ils sont.

Configurer la connexion à Spark
  1. Cliquez sur l'onglet Run pour ouvrir sa vue et cliquez sur l'onglet Spark Configuration pour afficher sa vue et configurer la connexion à Spark.

    Cette vue ressemble à l'image ci-dessous :

  2. Sélectionnez le type de cluster Spark auquel vous connecter.

    • Local : le Studio construit l'environnement Spark en lui-même au moment de l'exécution locale du Job dans le Studio. Avec ce mode, chaque processeur de la machine locale est utilisé comme Worker Spark pour effectuer les calculs. Ce mode requiert la configuration d'un minimum de paramètres dans la vue de configuration.

      Notez que cette machine locale est la machine sur laquelle s'exécute le Job. Le mode Local est le mode par défaut. Vous devez décocher cette case pour afficher la liste déroulante dans laquelle sélectionner les autres modes.

    • Standalone : le Studio se connecte à un cluster compatible Spark pour exécuter le Job depuis ce cluster.

    • Yarn client : le Studio exécute le pilote Spark pour orchestrer comment le Job doit être exécuté puis envoie l'orchestration au service Yarn d'un cluster Hadoop donné, afin que le Resource Manager de ce service Yarn demande des ressources pour l'exécution.

  3. Si vous utilisez le mode Yarn client, la liste Property type s'affiche et vous permet de sélectionner une connexion à Hadoop établie depuis le Repository, si vous avez créé cette connexion dans le Repository. Le Studio réutilise l'ensemble des informations de connexion pour ce Job.

    Pour plus d'informations concernant la création d'une connexion Hadoop dans le Repository, consultez le chapitre décrivant le nœud Hadoop cluster dans le Guide utilisateur du Studio Talend.

  4. Sélectionnez la version de la distribution Hadoop à utiliser avec Spark.

    Si vous ne trouvez pas votre distribution dans la liste déroulante, cela signifie que la distribution à laquelle vous souhaitez vous connecter n'est pas officiellement supportée par Talend. Dans ce cas, vous pouvez sélectionner Custom puis la version de Spark, dans la liste Spark version, du cluster auquel vous connecter. Cliquez sur le bouton pour afficher une boîte de dialogue dans laquelle vous pouvez :

    1. Sélectionner Import from existing version pour importer une distribution officiellement supportée comme base et ajouter d'autres fichiers .jar requis que la distribution de base ne fournit pas.

    2. Sélectionnez Import from zip pour importer le .zip de configuration pour la distribution personnalisée à utiliser. Ce fichier .zip doit contenir les bibliothèques des différents éléments Hadoop/Spark et le fichier d'index de ces bibliothèques.

      Notez que les versions personnalisées ne sont pas officiellement supportées par Talend. Talend et sa communauté fournissent l'opportunité de vous connecter à des versions personnalisées depuis le Studio mais ne peuvent vous garantir la simplicité de la configuration de la version que vous choisissez. Il est recommandé de configurer ces connexions si vous avez une expérience suffisante de Hadoop et de Spark pour gérer par vous-mêmes les problèmes pouvant survenir.

  5. Configurez les informations de connexion aux principaux services du cluster à utiliser.

    Si vous utilisez le mode Yarn client, vous devez saisir les adresses des différents services dans les champs correspondants (si vous laissez décochée la case d'un service, lors de l'exécution, la configuration du paramètre en question du cluster Hadoop sera ignorée) :

    • Dans le champ Resource manager, saisissez l'adresse du service ResourceManager du cluster Hadoop à utiliser.

    • Cochez la case Set resourcemanager scheduler address et saisissez l'adresse de l'ordonnanceur (Scheduler) dans le champ qui apparaît.

    • Cochez la case Set jobhistory address et saisissez l'emplacement du serveur JobHistory du cluster Hadoop à utiliser. Cela permet de stocker les informations relatives aux métriques du Job courant sur le serveur JobHistory.

    • Cochez la case Set staging directory et saisissez le chemin d'accès au répertoire défini dans votre cluster Hadoop pour les fichiers temporaires créés par l'exécution de programmes. Ce répertoire se trouve sous la propriété yarn.app.mapreduce.am.staging-dir dans les fichiers de configuration, notamment les fichiers yarn-site.xml et mapred-site.xml de votre distribution.

    • Si vous accédez au cluster Hadoop s'exécutant avec la sécurité Kerberos, cochez cette case. Saisissez les noms des principaux Kerberos pour le service du ResourceManager et le service du JobHistory dans les champs qui s'affichent. Cela vous permet d'utiliser votre identifiant pour vous authentifier par rapport aux informations stockées dans Kerberos. Ces principaux se trouvent dans les fichiers de configuration de votre distribution. Par exemple, dans une distribution CDH4, le Principal du ResourceManager est configuré dans le fichier yarn-site.xml et celui du JobHistory dans le fichier mapred-site.xml.

      Si vous souhaitez utiliser un fichier Kerberos keytab pour vous identifier, cochez la case Use a keytab to authenticate. Un fichier keytab contient des paires de principaux et clés cryptées Kerberos. Vous devez saisir le principal à utiliser dans le champ Principal et le chemin d'accès au fichier keytab dans le champ Keytab.

      Notez que l'utilisateur qui exécute un Job utilisant un keytab n'est pas forcément celui désigné par le principal mais qu'il doit avoir le droit de lecture pour le fichier keytab utilisé. Par exemple, le nom d'utilisateur que vous utilisez pour exécuter le Job est user1 et le principal à utiliser est guest. Dans cette situation, assurez-vous que user1 a les droits de lecture pour le fichier keytab à utiliser.

    • Le champ User name est disponible lorsque vous n'utilisez pas Kerberos pour vous authentifier. Dans ce champ, saisissez votre identifiant pour cette distribution. Si vous laissez le champ vide, le nom de la machine hébergeant le Studio sera utilisé.

      Comme le Job doit charger dans HDFS des fichiers .jar du cluster à utiliser, vous devez vous assurer que le nom d'utilisateur est le même que celui défini dans le tHDFSConfiguration, le composant utilisé pour fournir à Spark les informations de connexion à HDFS.

    Si vous utilisez le mode Standalone, vous devez configurer les paramètres suivants :

    • Dans le champ Spark host, saisissez l'URI du Spark Master du cluster Hadoop utilisé.

    • Dans le champ Spark home, saisissez l'emplacement où l'exécutable Spark est installé dans le cluster Hadoop utilisé.

  6. Si vous devez exécuter le Job courant sous Windows, il est recommandé de spécifier où le programme winutils.exe à utiliser est stocké.

    • Si vous savez où se trouve le fichier winutils.exe et que vous souhaitez l'utiliser, cochez la case Define the Hadoop home directory et saisissez le répertoire dans lequel est stocké winutils.exe.

    • Sinon, laissez cette case décochée. Le Studio en génère un par lui-même et l'utilise pour le Job.

  7. Si le cluster Spark ne peut reconnaître la machine sur laquelle le Job est lancé, cochez la case Define the driver hostname or IP address et saisissez le nom de l'hôte ou l'adresse IP de cette machine. Cela permet au Master et à son Worker Spark de reconnaître la machine où se trouve le Job et donc son pilote.

    Notez que, dans cette situation, vous devez également ajouter le nom et l'adresse IP de cette machine dans son fichier host.

  8. Cochez la case Set Tuning properties pour optimiser l'allocation des ressources à utiliser pour exécuter le Job. Ces propriétés ne sont pas obligatoires pour que le Job s'exécute correctement, mais elles sont utiles lorsque Spark est congestionné par des problèmes de ressources dans le cluster, comme le processeur, la bande passante ou la mémoire :

    • Driver memory et Driver core : saisissez la taille de la mémoire et le nombre de cœurs à allouer au pilote du Job courant.

    • Executor memory : saisissez la taille de la mémoire à allouer à chaque exécuteur Spark.

    • Core per executor : cochez cette case et, dans le champ affiché, saisissez le nombre de cœurs à utiliser par chaque exécuteur. Si vous laissez cette case décochée, l'allocation définie par défaut par Spark est utilisée. Par exemple, tous les cœurs disponibles sont utilisés par un exécuteur en mode Standalone.

    • Set Web UI port : si vous devez modifier le port par défaut de l'application Web de Spark, cochez cette case et saisissez le numéro du port à utiliser.

    • Broadcast factory : sélectionnez l'implémentation du broadcast à utiliser pour mettre les variables en cache sur chaque machine de Worker.

    • Customize Spark serializer : si vous devez importer un sérialiseur Spark externe, cochez cette case et, dans le champ qui s'affiche, saisissez le nom de la classe complètement qualifié du sérialiseur à utiliser.

    • Yarn resource allocation : sélectionnez comment vous souhaitez que Yarn alloue des ressources parmi les exécuteurs.

      • Auto : laissez Yarn gérer l'allocation seul.

      • Fixed : vous devez saisir le nombre d'exécuteurs à utiliser dans le champ Num executors qui s'affiche.

      • Dynamic : Yarn adapte le nombre d'exécuteurs afin de s'adapter à la charge de travail. Vous devez définir l'échelle de cette allocation dynamique en définissant le nombre initial d'exécuteurs à exécuter dans le champ Initial executors, le nombre le plus faible d'exécuteurs dans le champ Min executors et le plus grand nombre d'exécuteurs dans le champ Max executors.

      Cette fonctionnalité est disponible en mode Yarn client uniquement.

  9. Dans le champ Spark "scratch" directory, saisissez le répertoire dans lequel le Studio stocke, dans le système local, les fichiers temporaires comme les fichiers .jar à transférer. Si vous lancez votre Job sous Windows, le disque par défaut est C:. Si vous laissez /tmp dans ce champ, le répertoire est C:/tmp.

  10. Ajoutez toute propriété Spark à utiliser pour écraser la propriété équivalente utilisée par le Studio.

    Si vous souhaitez que les logs de l'application Spark de ce Job soient persistants dans le système de fichiers, ajoutez les propriétés relatives dans la table Advanced properties. Par exemple, les propriétés à configurer pour le mode Yarn client sont :

    • spark.yarn.historyServer.address

    • spark.eventLog.enabled

    • spark.eventLog.dir

    La valeur de la propriété spark.eventlog.enabled property doit être true. Pour les valeurs des deux autres propriétés, contactez l'administrateur du cluster Spark à utiliser.

    Pour plus d'informations concernant les propriétés Spark valides, consultez la documentation Spark à l'adresse https://spark.apache.org/docs/latest/configuration (en anglais).

Exécuter le Job pour créer le modèle de classification

Vous pouvez exécuter ce Job.

  • Appuyez sur la touche F6 pour exécuter le Job.

Cela fait, le fichier du modèle est créé dans le répertoire spécifié dans le tRandomForestModel.

Évaluation du modèle de classification

Relier les composants
  1. Dans la perspective Integration du Studio, créez un autre Job vide Spark Batch, nommé classify_and_evaluation par exemple, depuis le nœud Job Designs dans la vue Repository.

  2. Dans l'espace de modélisation graphique, saisissez le nom du composant à utiliser et sélectionnez ce composant dans la liste qui s'affiche. Dans ce Job, les composants sont un tHDFSConfiguration, un tFileInputDelimited, un tClassify, un tReplicate, un tJava, un tFilterColumns et un tLogRow.

  3. Reliez les composants à l'aide de liens Row > Main, sauf le tHDFSConfiguration, comme affiché dans l'image ci-dessus.

  4. Double-cliquez sur le tHDFSConfiguration pour ouvrir sa vue Component et configurez-le comme expliqué précédemment dans le scénario.

Charger l'ensemble de données d'apprentissage dans le Job
  1. Double-cliquez sur le tFileInputDelimited pour ouvrir sa vue Component.

  2. Cochez la case Define a storage configuration component et sélectionnez le composant tHDFSCongfiguration à utiliser.

    Le tFileInputDelimited utilise cette configuration pour accéder à l'ensemble d'apprentissage à utiliser.

  3. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir l'éditeur du schéma.

  4. Cliquez cinq fois sur le bouton [+] pour ajouter cinq lignes et, dans la colonne Column, renommez ces lignes reallabel, sms_contents, num_currency, num_numeric et num_exclamation, respectivement.

    Les colonnes reallabel et sms_contents contiennent les données brutes composées, respectivement, de SMS dans la colonne sms_contents et de libellés indiquant qu'un message est un spam dans la colonne reallabel.

    Les autres colonnes sont utilisées pour contenir les caractéristiques ajoutées aux ensembles de données brutes, comme expliqué précédemment dans le scénario. Elles contiennent le nombre de symboles monétaires, le nombre de valeurs numériques et le nombre de points d'exclamation trouvés dans chaque SMS.

  5. Dans la colonne Type, sélectionnez Integer pour les colonnes num_currency, num_numeric et num_exclamation.

  6. Cliquez sur OK afin de valider ces modifications.

  7. Dans le champ Folder/File, saisissez le répertoire où est stocké le test à utiliser.

  8. Dans le champ Field separator, saisissez \t, séparateur utilisé par les ensembles de données que vous pouvez télécharger et utiliser dans ce scénario.

Appliquer le modèle de classification
  1. Double-cliquez sur le tClassify pour ouvrir sa vue Component.

  2. Sélectionnez le bouton radio Model on filesystem et saisissez le répertoire dans lequel est stocké le modèle de classification à utiliser.

    Le composant tClassify contient une colonne en lecture seule nommée label, dans laquelle le modèle fournit les classes à utiliser dans processus de classification. La colonne reallabel récupérée du schéma d'entrée contient les classes auxquelles chaque message appartient. Le modèle sera évalué en comparant le libellé de chaque message par rapport au libellé déterminé par le modèle.