Les travaux interactifs PySpark exécutés dans un notebook nécessitent souvent des bibliothèques Python tierces pour le traitement et l'analyse des données. Vous pouvez installer ces bibliothèques en suivant l'une des trois méthodes décrites ci-dessous.
Informations générales
Lors du développement interactif avec PySpark, les bibliothèques Python tierces offrent une plus grande flexibilité pour le traitement et l'analyse des données. Le tableau suivant compare les trois méthodes disponibles.
|
Méthode |
Cas d'utilisation |
|
Méthode 1 : Installer des bibliothèques Python à l'aide de pip |
Traitement de variables non liées à Spark, telles que les valeurs de retour des calculs Spark ou des variables personnalisées. Important
Les bibliothèques installées via cette méthode ne persistent pas entre les sessions et doivent être réinstallées après chaque redémarrage de session. |
|
Méthode 2 : Configurer un environnement Python personnalisé à l'aide d'Environments |
Travaux PySpark nécessitant que les bibliothèques tierces soient préinstallées dans chaque session de notebook. |
|
Méthode 3 : Configurer un environnement Python personnalisé à l'aide des paramètres Spark |
Calcul distribué PySpark où les bibliothèques tierces doivent être accessibles à tous les exécuteurs. |
Prérequis
Un espace de travail est créé. Pour plus d'informations, consultez la rubrique Créer un espace de travail.
Une session de notebook est créée. Pour plus d'informations, consultez la rubrique Gérer les sessions de notebook.
Un notebook est créé. Pour plus d'informations, consultez la rubrique Développement avec Notebook.
Procédure
Méthode 1 : Installer des bibliothèques à l'aide de pip
-
Accédez à la page de développement du notebook.
Connectez-vous à la console E-MapReduce.
Dans le volet de navigation de gauche, sélectionnez .
Sur la page Spark, cliquez sur le nom de l'espace de travail cible.
Sur la page EMR Serverless Spark, cliquez sur Development dans le volet de navigation de gauche.
Double-cliquez sur le notebook créé.
-
Dans une cellule Python du notebook, saisissez la commande suivante pour installer la bibliothèque scikit-learn, puis cliquez sur l'icône Run Cell
.pip install scikit-learn -
Dans une autre cellule Python, saisissez le code suivant, puis cliquez sur l'icône Run Cell
.# Import the library and prepare the dataset. from sklearn import datasets # Load a built-in dataset, such as the Iris dataset. iris = datasets.load_iris() X = iris.data # Feature data y = iris.target # Label # Split the dataset. from sklearn.model_selection import train_test_split # Split the data into training and test sets. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Train a support vector machine (SVM) model. from sklearn.svm import SVC # Create a classifier instance. clf = SVC(kernel='linear') # Use a linear kernel. # Train the model. clf.fit(X_train, y_train) # Make predictions with the trained model. y_pred = clf.predict(X_test) # Evaluate model performance. from sklearn.metrics import classification_report, accuracy_score print(classification_report(y_test, y_pred)) print("Accuracy:", accuracy_score(y_test, y_pred))Le résultat ressemble à ce qui suit :
precision recall f1-score support 0 1.00 1.00 1.00 19 1 1.00 1.00 1.00 13 2 1.00 1.00 1.00 13 accuracy 1.00 45 macro avg 1.00 1.00 1.00 45 weighted avg 1.00 1.00 1.00 45 Accuracy: 1.0
Méthode 2 : Configurer un environnement avec Environments
Étape 1 : Créer un environnement d'exécution
-
Accédez à la page Environments.
Connectez-vous à la console E-MapReduce.
Dans le volet de navigation de gauche, sélectionnez EMR Serverless > Spark.
Sur la page Spark, cliquez sur le nom de l'espace de travail cible.
Sur la page EMR Serverless Spark, cliquez sur Environment dans le volet de navigation de gauche.
Cliquez sur Create Environment.
-
Sur la page Create Environment, cliquez sur Add Library.
Pour obtenir la description des paramètres, consultez la rubrique Gérer les environnements d'exécution.
-
Dans la boîte de dialogue New Library, définissez Source Type sur PyPI, spécifiez le PyPI Package, puis cliquez sur OK.
Dans le champ PyPI Package, saisissez le nom et la version de la bibliothèque. Si vous ne spécifiez pas de version, la dernière version est installée. Exemple :
scikit-learn. -
Cliquez sur create.
Une fois l'environnement créé, le système commence à l'initialiser.
Étape 2 : Utiliser l'environnement d'exécution
Arrêtez la session avant de la modifier.
-
Accédez à l'onglet Notebook Session.
Sur la page EMR Serverless Spark, sélectionnez dans le volet de navigation de gauche.
Cliquez sur l'onglet Notebook Session.
Dans la colonne Actions de la session de notebook cible, cliquez sur Edit.
Dans la liste déroulante Environment, sélectionnez l'environnement d'exécution créé à l'étape précédente, puis cliquez sur Save Changes.
Dans le coin supérieur droit, cliquez sur START.
Étape 3 : Classifier les données avec Scikit-learn
-
Accédez à la page de développement du notebook.
Sur la page EMR Serverless Spark, cliquez sur Development dans le volet de navigation de gauche.
Double-cliquez sur le notebook créé.
-
Dans une cellule Python du notebook, saisissez le code suivant, puis cliquez sur l'icône Run Cell
.# Import the library and prepare the dataset. from sklearn import datasets # Load a built-in dataset, such as the Iris dataset. iris = datasets.load_iris() X = iris.data # Feature data y = iris.target # Label # Split the dataset. from sklearn.model_selection import train_test_split # Split the data into training and test sets. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Train a support vector machine (SVM) model. from sklearn.svm import SVC # Create a classifier instance. clf = SVC(kernel='linear') # Use a linear kernel. # Train the model. clf.fit(X_train, y_train) # Make predictions with the trained model. y_pred = clf.predict(X_test) # Evaluate model performance. from sklearn.metrics import classification_report, accuracy_score print(classification_report(y_test, y_pred)) print("Accuracy:", accuracy_score(y_test, y_pred))
Méthode 3 : Configurer un environnement avec les paramètres Spark
Cette méthode nécessite ipykernel version 6.29 ou ultérieure, jupyter_client version 8.6 ou ultérieure, ainsi que Python 3.8 ou ultérieur. L'environnement doit être empaqueté sur un système Linux avec une architecture x86.
Étape 1 : Construire et déployer un environnement conda
-
Exécutez les commandes suivantes pour installer Miniconda :
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh chmod +x Miniconda3-latest-Linux-x86_64.sh ./Miniconda3-latest-Linux-x86_64.sh -b source miniconda3/bin/activate -
Construisez un environnement conda utilisant Python 3.8 et numpy.
# Create and activate the conda environment. conda create -y -n pyspark_conda_env python=3.8 conda activate pyspark_conda_env # Install third-party libraries. pip install numpy \ ipykernel~=6.29 \ jupyter_client~=8.6 \ jieba \ conda-pack # Pack the environment. conda pack -f -o pyspark_conda_env.tar.gz
Étape 2 : Téléverser le fichier de ressource vers OSS
Téléversez le fichier empaqueté pyspark_conda_env.tar.gz vers Alibaba Cloud OSS et notez le chemin OSS complet. Pour plus d'informations, consultez la rubrique Téléversement simple.
Étape 3 : Configurer et démarrer la session de notebook
Arrêtez la session avant de la modifier.
-
Accédez à l'onglet Notebook Session.
Sur la page EMR Serverless Spark, sélectionnez dans le volet de navigation de gauche.
Cliquez sur l'onglet Notebook Session.
Dans la colonne Actions de la session de notebook cible, cliquez sur Edit.
-
Dans la section Spark Configuration, ajoutez les configurations suivantes et cliquez sur Save Changes.
spark.archives oss://<yourBucket>/path/to/pyspark_conda_env.tar.gz#env spark.pyspark.python ./env/bin/pythonRemarqueDans la configuration, remplacez
<yourBucket>/path/topar votre chemin de téléversement OSS réel. Dans le coin supérieur droit, cliquez sur START.
Étape 4 : Traiter les données textuelles avec Jieba
Jieba est une bibliothèque Python tierce dédiée à la segmentation de texte chinois. Pour plus d'informations sur sa licence open source, consultez la page LICENSE.
-
Accédez à la page de développement du notebook.
Sur la page EMR Serverless Spark, cliquez sur Development dans le volet de navigation de gauche.
Double-cliquez sur le notebook créé.
-
Dans une nouvelle cellule Python, saisissez la commande suivante pour effectuer la segmentation de mots chinois à l'aide de Jieba, puis cliquez sur l'icône Run Cell
.import jieba strs = ["EMRServerlessSpark是一款专为大规模数据处理与分析而打造的全托管Serverless产品", "为您提供了高效的任务开发调试调度以及运维等一站式服务", "EMRServerlessSpark实现了资源调度和根据任务负载进行动态扩展"] sc.parallelize(strs).flatMap(lambda s: jieba.cut(s, use_paddle=True)).collect()La commande renvoie le résultat suivant :
import jieba strs = ["EMRServerlessSpark是一款专为大规模数据处理与分析而打造的全托管Serverless产品", "为您提供了高效的任务开发调试调度以及运维等一站式服务", "EMRServerlessSpark实现了资源调度和根据任务负载进行动态扩展..."] sc.parallelize(strs).flatMap(lambda s: jieba.cut(s, use_paddle=True)).collect() ['EMRServerlessSpark', '是', '一款', '专', '为', '大规模', '数据处理', '与', '分析', '而', '打造', '的', '全', '托管', 'Serverless', '产品', '为', '您', '提供', '了', '高效', '的', '任务', '开发', '调试', '调度', '以及', '运维', '等', '一站式', '服务', 'EMRServerlessSpark', '实现', '了', '资源', '调度', '和', '根据', '任务', '负载', '进行', '动态', '扩展']