Comment installer de manière permanente une bibliothèque Spark ou Scala sur un cluster Amazon EMR ?

Date de la dernière mise à jour : 20/11/2020

Comment installer de manière permanente un package sur un cluster Amazon EMR, puis accéder au package sur un bloc-notes EMR ?

Résolution

L'exemple suivant permet d’installer GraphFrames à partir du site Web GraphFrames. Procédez comme suit pour installer de manière permanente n’importe quelle bibliothèque Spark ou Scala à laquelle vous souhaitez accéder sur le noyau PySpark d'un bloc-notes EMR.

Préparer le script d'action d’amorçage

1.    Téléchargez le fichier JAR de votre bibliothèque.

2.    Chargez le fichier JAR dans un compartiment Amazon Simple Storage Service (Amazon S3).

3.    Créez un script d'action d'amorçage similaire au suivant. Cet exemple de script permet d’installer automatiquement la bibliothèque GraphFrames sur tous les nœuds d'un cluster Amazon EMR. Remplacez s3://doc-example-bucket/graphframes-0.8.0-spark2.4-s_2.11.jar par le chemin d'accès au fichier JAR dans votre compartiment S3.

#!/bin/bash
# These two following statements install the graphframes library on all nodes of an EMR cluster for Python base version 2.7 and Python 3.
sudo pip-3.6 install graphframes
sudo pip install graphframes
# The following statement copies the GraphFrames Spark jar from an S3 bucket to all nodes of an EMR cluster on the required path.
sudo aws s3 cp s3://doc-example-bucket/graphframes-0.8.0-spark2.4-s_2.11.jar /usr/lib/spark/jars/

3.    Chargez le script d'action d'amorçage dans votre compartiment S3.

4.    Ouvrez la console Amazon EMR.

5.    Choisissez Create cluster (Créer un cluster), puis Go to advanced options. (Accéder aux options avancées).

6.    Dans la section Software configuration (Configuration logicielle), choisissez Hive, Livy et Spark. Ces packages de logiciels sont nécessaires pour exécuter des EMR Notebooks. Pour plus d'informations, consultez Configuration requise pour les clusters.

7.    Continuez la création du cluster. Sur la page Step 3: General Cluster Settings (Étape 3 : Paramètres généraux du cluster), saisissez le chemin d'accès à votre script d'action d'amorçage. Pour plus d'informations, voir Ajouter des actions d'amorçage personnalisées à l'aide de la console.

8.    Terminez la création du cluster.

9.    Créez un bloc-notes EMR à l'aide du cluster que vous venez de créer.

10.   Lorsque le bloc-notes est Prêt, choisissez Open in JupyterLab (Ouvrir dans JupyterLab).

11.   Pour tester le code PySpark à l'aide du noyau PySpark, exécutez un extrait de code similaire à ce qui suit. Si ce code réussit, GraphFrames est installé correctement.

          from pyspark import *
          from pyspark.sql import *
          from graphframes import *
          spark = SparkSession.builder.appName('fun').getOrCreate()
          vertices = spark.createDataFrame([('1', 'Carter', 'Derrick', 50),
                                            ('2', 'May', 'Derrick', 26),
                                           ('3', 'Mills', 'Jeff', 80),
                                            ('4', 'Hood', 'Robert', 65),
                                            ('5', 'Banks', 'Mike', 93),
                                           ('98', 'Berg', 'Tim', 28),
                                           ('99', 'Page', 'Allan', 16)],
                                           ['id', 'name', 'firstname', 'age'])
          edges = spark.createDataFrame([('1', '2', 'friend'),
                                         ('2', '1', 'friend'),
                                        ('3', '1', 'friend'),
                                        ('1', '3', 'friend'),
                                         ('2', '3', 'follows'),
                                         ('3', '4', 'friend'),
                                         ('4', '3', 'friend'),
                                         ('5', '3', 'friend'),
                                         ('3', '5', 'friend'),
                                         ('4', '5', 'follows'),
                                        ('98', '99', 'friend'),
                                        ('99', '98', 'friend')],
                                        ['src', 'dst', 'type'])
          g = GraphFrame(vertices, edges)
          ## Take a look at the DataFrames
          g.vertices.show()
          g.edges.show()
          ## Check the number of edges of each vertex
          g.degrees.show()

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


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