Membawa data science ke skala besar: bekerja dengan Apache Spark untuk big data, memanfaatkan cloud ML (AWS/GCP/Azure), dan prinsip distributed compute — dilengkapi praktik analisis dataset besar

Setelah di episode 22 kita membangun solusi LLM, pada episode ini kita menjawab pertanyaan yang pasti muncul saat data tumbuh: "bagaimana jika data tidak muat di satu mesin?". Dataset besar — miliaran baris log, transaksi nasional, streaming telemetri — tidak bisa dimuat ke Pandas. Inilah masalah scalable data science.
Mengapa skill ini penting bagi data scientist? Karena hampir semua perusahaan dengan data besar mengharapkan data scientist yang bisa naik kelas: dari notebook di laptop ke cluster. Kalian tidak harus jadi data engineer — tetapi harus paham cara memakai Spark dan cloud agar analisis yang berjalan di laptop bisa berjalan di skala produksi. Kemampuan ini juga yang sering membedakan level junior dan senior.
Spark adalah framework distributed computing paling populer untuk data besar. Konsep intinya: data dipecah ke banyak mesin (partisi) dan diproses paralel.
Perbedaan kunci dengan Pandas:
| Aspek | Pandas | PySpark |
|---|---|---|
| Model data | DataFrame in-memory satu mesin | DataFrame terdistribusi (RDD) |
| Skala | Muat di RAM laptop | Kluster, petabyte |
| Eksekusi | Eager (langsung) | Lazy (dihitung saat butuh) |
| Speed | Cepat untuk kecil-menengah | Overhead untuk kecil; cepat untuk besar |
dtype yang perlu diperhatikan: Spark lazy — operasi baru mencatat rencana eksekusi, dan dijalankan saat ada aksi (.collect(), .count(), .show()). Ini memungkinkan optimasi sebelum eksekusi.
pip install pysparkfrom pyspark.sql import SparkSession
from pyspark.sql.functions import sum as spark_sum
spark = SparkSession.builder.appName("sales-analysis").getOrCreate()
df = spark.read.parquet("s3://bucket/transactions/*.parquet")
print("partisi:", df.rdd.getNumPartitions())
result = (df
.filter(df["date"] >= "2026-01-01")
.groupBy("store_id", "product_id")
.agg(spark_sum("amount").alias("revenue"))
.orderBy("revenue", ascending=False))
result.show(10)Perhatikan perbedaan gaya dengan Pandas: filter → groupBy → agg → orderBy dirangkai sebagai rencana, dan show() mengeksekusinya. Dataset yang tidak muat di RAM laptop tetap bisa diagregasi karena tiap partisi diproses terpisah.
Pada skala besar, jangan eksplorasi seluruh data di awal — sampling adalah praktik standar:
sample = df.sample(fraction=0.01, seed=42)
sample_pd = sample.toPandas() # aman: hanya 1% data
print(sample_pd["store_id"].nunique())toPandas() hanya dibenarkan pada data kecil (sampling/hasil agregat) — mengumpulkan miliaran baris ke driver akan mematikan kluster. Pola yang benar: agregasi di Spark, hasil kecil dibawa ke Pandas.
Perusahaan besar menjalankan data science di cloud. Tiga platform utama:
| Platform | Layanan ML | Kekuatan |
|---|---|---|
| AWS | SageMaker | Paling luas, banyak dipakai enterprise |
| GCP | Vertex AI | Integrasi kuat dengan BigQuery |
| Azure | Azure ML | Integrasi baik dengan ekosistem Microsoft |
Alur cloud ML modern (pola umum di semua platform):
Data di data lake (S3/GCS/ADLS)
→ Fitur pipeline (Spark / serverless)
→ Training (managed notebook / training job)
→ Registry & tracking (MLflow — episode 12)
→ Serving (API managed, autoscale)
→ Monitoring (drift & quality)Yang perlu diingat: prinsipnya sama dengan yang sudah kalian pelajari — tracking, registry, dan monitoring hanya berpindah tempat. Skill yang kalian bawa (Python, SQL, MLflow, model card) berlaku lintas platform.
Tip
Cara paling murah belajar cloud ML: coba serverless query (BigQuery, Athena) untuk data besar, lalu managed notebook (SageMaker Studio, Vertex) untuk training. Tidak perlu membangun kluster sendiri — 2026 memungkinkan compute on demand yang menyala hanya saat dipakai.
Distributed computing bukan jawaban untuk semua masalah. Keputusan skalanya:
| Situasi | Pendekatan |
|---|---|
| Data < 10 GB | Pandas cukup |
| Data 10 GB - 1 TB | Polars / Dask (satu mesin multi-core) |
| Data > 1 TB, streaming, terdistribusi | Spark / cloud distributed |
| Deep learning besar | GPU cluster (episode 13) |
Aturan praktis: mulai dari yang paling sederhana. Memakai Spark untuk data 500 MB justru menambah overhead. Naik kelas hanya saat (1) data tidak muat, (2) query terlalu lambat, atau (3) kebutuhan terdistribusi.
| Pitfall | Dampak | Solusi |
|---|---|---|
collect() data besar | Driver crash | Agregasi di Spark, sampling untuk Pandas |
| Memakai Spark untuk data kecil | Overhead tak perlu | Pandas/Polars dulu |
| Eksplorasi penuh data besar | Waktu & biaya tinggi | Sampling pertama |
| Mengabaikan skema/tipe data | Query salah | Tentukan skema eksplisit |
| Lupa lazy evaluation | Ekspektasi hasil instan | Ingat: eksekusi saat aksi |
Inti yang harus dibawa pulang:
Di episode 24 selanjutnya kita akan membahas production ML integration — kolaborasi dengan ML engineer, deployment, dan monitoring dasar model di dunia nyata. Sampai jumpa di episode 24!