Saat menjalankan pekerjaan PySpark interaktif di dalam notebook, Anda dapat menggunakan library Python pihak ketiga untuk meningkatkan pemrosesan dan analisis data. Topik ini menjelaskan tiga metode untuk menginstal library tersebut.
Informasi latar belakang
Selama pengembangan PySpark interaktif, Anda dapat memanfaatkan library Python pihak ketiga guna mempermudah dan meningkatkan fleksibilitas pemrosesan serta analisis data. Topik ini menjelaskan tiga metode yang tersedia—pilih yang paling sesuai dengan kebutuhan Anda.
|
Metode |
Use Cases |
|
Memproses variabel yang tidak terkait dengan Spark di dalam notebook, seperti nilai kembali dari komputasi Spark atau variabel kustom. Penting
Library yang diinstal dengan metode ini tidak bertahan lintas session dan harus diinstal ulang setelah setiap restart. |
|
|
Metode 2: Konfigurasikan lingkungan Python kustom menggunakan Environments |
Untuk pekerjaan PySpark yang memerlukan library pihak ketiga agar sudah terinstal sebelumnya di setiap session notebook. |
|
Metode 3: Konfigurasikan lingkungan Python kustom menggunakan parameter Spark |
Untuk komputasi PySpark terdistribusi di mana library pihak ketiga harus tersedia untuk semua pelaksana (executor). |
Prasyarat
-
Ruang kerja telah dibuat. Untuk informasi selengkapnya, lihat Buat ruang kerja.
-
Session notebook telah dibuat. Untuk informasi selengkapnya, lihat Kelola session notebook.
-
Notebook telah dibuat. Untuk informasi selengkapnya, lihat Pengembangan Notebook.
Prosedur
Metode 1: Instal library menggunakan pip
-
Buka halaman pengembangan notebook.
-
Login ke Konsol E-MapReduce.
-
Di panel navigasi kiri, pilih .
-
Di halaman Spark, klik nama ruang kerja target Anda.
-
Di halaman EMR Serverless Spark, klik Development di panel navigasi kiri.
-
Klik ganda notebook yang telah Anda buat.
-
-
Di sel Python notebook, masukkan perintah berikut untuk menginstal library scikit-learn, lalu klik ikon Run Cell
.pip install scikit-learn -
Di sel Python lain, masukkan kode berikut, lalu klik ikon Run Cell
.# Impor library dan siapkan set data. from sklearn import datasets # Muat set data bawaan, seperti Iris dataset. iris = datasets.load_iris() X = iris.data # Data fitur y = iris.target # Label # Lakukan pemisahan set data. from sklearn.model_selection import train_test_split # Pisahkan data menjadi set pelatihan dan set pengujian. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Latih model support vector machine (SVM). from sklearn.svm import SVC # Buat instans klasifikasi. clf = SVC(kernel='linear') # Gunakan kernel linear. # Latih model. clf.fit(X_train, y_train) # Lakukan prediksi dengan model yang telah dilatih. y_pred = clf.predict(X_test) # Evaluasi kinerja model. from sklearn.metrics import classification_report, accuracy_score print(classification_report(y_test, y_pred)) print("Accuracy:", accuracy_score(y_test, y_pred))Outputnya mirip dengan berikut:
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
Metode 2: Konfigurasikan lingkungan dengan Environments
Langkah 1: Buat lingkungan runtime
-
Buka halaman Environments.
-
Login ke Konsol E-MapReduce.
-
Di panel navigasi kiri, pilih EMR Serverless > Spark.
-
Di halaman Spark, klik nama ruang kerja target Anda.
-
Di halaman EMR Serverless Spark, klik Environment di panel navigasi kiri.
-
-
Klik Create Environment.
-
Di halaman Create Environment, klik Add Library.
Untuk detail parameter, lihat Kelola lingkungan runtime.
-
Di kotak dialog New Library, atur Source Type ke PyPI, tentukan PyPI Package, lalu klik OK.
Di bidang PyPI Package, masukkan nama dan versi library. Jika Anda tidak menentukan versi, sistem akan menginstal versi terbaru. Contoh:
scikit-learn. -
Klik create.
Setelah lingkungan dibuat, sistem mulai menginisialisasinya.
Langkah 2: Gunakan lingkungan runtime
Hentikan session sebelum mengeditnya.
-
Buka tab Notebook Session.
-
Di halaman EMR Serverless Spark, pilih di panel navigasi kiri.
-
Klik tab Notebook Session.
-
-
Di kolom Actions session notebook target, klik Edit.
-
Dari daftar drop-down Environment, pilih lingkungan runtime yang telah Anda buat pada langkah sebelumnya, lalu klik Save Changes.
-
Di pojok kanan atas, klik START.
Langkah 3: Klasifikasikan data dengan Scikit-learn
-
Buka halaman pengembangan notebook.
-
Di halaman EMR Serverless Spark, klik Development di panel navigasi kiri.
-
Klik ganda notebook yang telah Anda buat.
-
-
Di sel Python notebook, masukkan kode berikut, lalu klik ikon Run Cell
.# Impor library dan siapkan set data. from sklearn import datasets # Muat set data bawaan, seperti Iris dataset. iris = datasets.load_iris() X = iris.data # Data fitur y = iris.target # Label # Lakukan pemisahan set data. from sklearn.model_selection import train_test_split # Pisahkan data menjadi set pelatihan dan set pengujian. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Latih model support vector machine (SVM). from sklearn.svm import SVC # Buat instans klasifikasi. clf = SVC(kernel='linear') # Gunakan kernel linear. # Latih model. clf.fit(X_train, y_train) # Lakukan prediksi dengan model yang telah dilatih. y_pred = clf.predict(X_test) # Evaluasi kinerja model. from sklearn.metrics import classification_report, accuracy_score print(classification_report(y_test, y_pred)) print("Accuracy:", accuracy_score(y_test, y_pred))
Metode 3: Konfigurasikan lingkungan dengan parameter Spark
Metode ini memerlukan ipykernel 6.29 atau lebih baru, jupyter_client 8.6 atau lebih baru, dan Python 3.8 atau lebih baru. Selain itu, Anda harus mengemas lingkungan pada sistem Linux dengan arsitektur x86.
Langkah 1: Bangun dan deploy lingkungan conda
-
Jalankan perintah berikut untuk menginstal 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 -
Bangun lingkungan conda yang menggunakan Python 3.8 dan numpy.
# Buat dan aktifkan lingkungan conda. conda create -y -n pyspark_conda_env python=3.8 conda activate pyspark_conda_env # Instal library pihak ketiga. pip install numpy \ ipykernel~=6.29 \ jupyter_client~=8.6 \ jieba \ conda-pack # Kemas lingkungan. conda pack -f -o pyspark_conda_env.tar.gz
Langkah 2: Unggah file resource ke OSS
Unggah file pyspark_conda_env.tar.gz yang telah dikemas ke Alibaba Cloud OSS dan catat path OSS lengkapnya. Untuk informasi selengkapnya, lihat Simple Upload.
Langkah 3: Konfigurasikan dan mulai session notebook
Hentikan session sebelum mengeditnya.
-
Buka tab Notebook Session.
-
Di halaman EMR Serverless Spark, pilih di panel navigasi kiri.
-
Klik tab Notebook Session.
-
-
Di kolom Actions session notebook target, klik Edit.
-
Di bagian Spark Configuration, tambahkan konfigurasi berikut dan klik Save Changes.
spark.archives oss://<yourBucket>/path/to/pyspark_conda_env.tar.gz#env spark.pyspark.python ./env/bin/pythonCatatanDalam konfigurasi tersebut, ganti
<yourBucket>/path/todengan path unggah OSS aktual Anda. -
Di pojok kanan atas, klik START.
Langkah 4: Proses data teks dengan Jieba
Jieba adalah library Python pihak ketiga untuk segmentasi teks bahasa Tionghoa. Untuk informasi tentang lisensi open-source-nya, lihat LICENSE.
-
Buka halaman pengembangan notebook.
-
Di halaman EMR Serverless Spark, klik Development di panel navigasi kiri.
-
Klik ganda notebook yang telah Anda buat.
-
-
Di sel Python baru, masukkan perintah berikut untuk melakukan segmentasi kata bahasa Tionghoa menggunakan Jieba, lalu klik ikon Run Cell
.import jieba strs = ["EMRServerlessSpark是一款专为大规模数据处理与分析而打造的全托管Serverless产品", "为您提供了高效的任务开发调试调度以及运维等一站式服务", "EMRServerlessSpark实现了资源调度和根据任务负载进行动态扩展"] sc.parallelize(strs).flatMap(lambda s: jieba.cut(s, use_paddle=True)).collect()Perintah tersebut mengembalikan hasil berikut:
import jieba strs = ["EMRServerlessSpark是一款专为大规模数据处理与分析而打造的全托管Serverless产品", "为您提供了高效的任务开发调试调度以及运维等一站式服务", "EMRServerlessSpark实现了资源调度和根据任务..."] sc.parallelize(strs).flatMap(lambda s: jieba.cut(s, use_paddle=True)).collect() ['EMRServerlessSpark', '是', '一款', '专', '为', '大规模', '数据处理', '与', '分析', '而', '打造', '的', '全', '托管', 'Serverless', '产品', '为', '您', '提供', '了', '高效', '的', '任务', '开发', '调试', '调度', '以及', '运维', '等', '一站式', '服务', 'EMRServerlessSpark', '实现', '了', '资源', '调度', '和', '根据', '任务', '负载', '进行', '动态', '扩展']