PySpark untuk Machine Learning
Daftar Isi
Pendahuluan
Apache Spark adalah standar de facto untuk pemrosesan data terdistribusi berskala besar. Library machine learning-nya, MLlib, menyediakan implementasi algoritma ML umum yang dapat diskalakan dan berjalan mulus pada klaster yang terdiri dari ratusan mesin.
PySpark, yaitu API Python untuk Spark, memungkinkan data scientist menggunakan sintaksis Python yang familiar sembari memanfaatkan kekuatan penuh mesin komputasi terdistribusi Spark. Tutorial ini mencakup alur kerja ML PySpark secara lengkap: dari membuat SparkSession dan memanipulasi DataFrame, melalui pembangunan model klasifikasi, regresi, dan klasterisasi, hingga deployment model dengan Spark Structured Streaming.
Baik Anda memproses data berukuran gigabyte maupun terabyte, pola-pola dalam tutorial ini berlaku sama.
Prasyarat
- Python 3.9+
- Java 11 atau 17 (diperlukan oleh Spark)
- Pemahaman dasar tentang konsep machine learning
Instalasi PySpark:
pip install pyspark numpy pandas
Untuk deployment di klaster, pastikan Spark terinstal di semua node. Untuk pengembangan lokal, PySpark menyertakan instance Spark standalone bawaan.
Dasar Spark dan SparkSession
Setiap aplikasi PySpark dimulai dengan SparkSession, yang merupakan titik masuk terpadu untuk semua fungsionalitas Spark.
Membuat SparkSession
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("Tutorial ML PySpark") \
.master("local[]") \
.config("spark.driver.memory", "4g") \
.config("spark.sql.shuffle.partitions", "8") \
.config("spark.serializer", "org.apache.spark.serializer.KryoSerializer") \
.getOrCreate()
Verifikasi sesi
print(f"Versi Spark: {spark.version}")
print(f"Nama aplikasi: {spark.sparkContext.appName}")
print(f"Master: {spark.sparkContext.master}")
print(f"Paralelisme default: {spark.sparkContext.defaultParallelism}")
Memahami Arsitektur Spark
Spark mengikuti arsitektur master-worker:
- Driver: Proses yang menjalankan program utama Anda dan membuat SparkContext.
- Executor: Proses pekerja yang menjalankan tugas dan menyimpan partisi data.
- Cluster Manager: Mengalokasikan sumber daya (YARN, Mesos, Kubernetes, atau standalone).
Konsep kunci:
- RDD (Resilient Distributed Dataset): Struktur data dasar (API level rendah).
- DataFrame: Koleksi baris terdistribusi yang terorganisir dalam kolom bernama (API level tinggi, direkomendasikan untuk ML).
- Lazy Evaluation: Transformasi tidak dieksekusi sampai sebuah aksi dipanggil.
Operasi DataFrame
Spark DataFrame adalah struktur data utama untuk alur kerja ML di PySpark.
Membuat dan Memuat DataFrame
from pyspark.sql.types import StructType, StructField, FloatType, IntegerType, StringType
import numpy as np
Membuat dari data Python
data = [
(1, "Alice", 28, 55000.0, "Engineering"),
(2, "Bob", 35, 72000.0, "Marketing"),
(3, "Carol", 42, 88000.0, "Engineering"),
(4, "Dave", 31, 61000.0, "Sales"),
(5, "Eve", 26, 48000.0, "Marketing"),
]
skema = StructType([
StructField("id", IntegerType(), False),
StructField("nama", StringType(), False),