Apache Spark adalah mesin pemrosesan terdistribusi yang dirancang untuk memproses data terstruktur, semi-terstruktur, dan tidak terstruktur dalam skala besar. Untuk berinteraksi dengan mesin dan menentukan operasi data terdistribusi, developer menggunakan Spark API.
Inti dari pengembangan Spark modern adalah Spark DataFrame API. DataFrame mengatur dan memproses data terdistribusi ke dalam kolom bernama, mirip dengan tabel dalam database relasional atau spreadsheet. DataFrame menyediakan antarmuka deklaratif yang terstruktur untuk menganalisis set data besar sekaligus mengoptimalkan eksekusi fisik secara otomatis di balik layar.
Untuk memahami cara Spark API mengeksekusi kode Anda di seluruh jaringan terdistribusi, penting untuk memahami komponen dasar arsitektur runtime-nya:
Saat mendesain pipeline data terdistribusi, developer memilih antara dua antarmuka pemrograman utama:
Untuk hampir semua kasus penggunaan data engineering dan data science, DataFrame API adalah pilihan yang lebih disukai. RDD disediakan untuk skenario saat Anda harus memanipulasi data mentah yang tidak terstruktur (seperti file biner atau streaming media) menggunakan objek Java kustom. DataFrame memerlukan lebih sedikit kode, otomatis berjalan lebih cepat, dan menggunakan pengelolaan memori biner off-heap untuk menghindari bottleneck pembersihan sampah memori JVM.
Spark DataFrame API menyederhanakan tugas-tugas yang intensif secara komputasi dalam memproses, membersihkan, dan menyiapkan data dalam jumlah besar.
Spark DataFrame API berfungsi sebagai fondasi terprogram untuk library pemrosesan lanjutan Spark:
Pengoptimalan deklaratif
DataFrame menggunakan pengoptimal kueri bawaan yang disebut Catalyst Optimizer. Saat Anda menulis kode DataFrame, pengoptimal akan otomatis menulis ulang rencana eksekusi fisik yang menerapkan pushdown filter, pruning proyeksi, dan pengurutan ulang gabungan untuk berjalan secepat mungkin tanpa penyesuaian manual.
Fleksibilitas bahasa
Entah tim Anda menulis kode dalam Python (PySpark), Scala, Java, atau R, DataFrame API memastikan performa yang sama. Rencana eksekusi yang mendasarinya dikompilasi dan dioptimalkan dalam lapisan eksekusi yang sama dan tidak bergantung pada JVM.
Pengelolaan memori yang efisien
DataFrame menggunakan mesin eksekusi Tungsten untuk menyimpan data dalam format biner off-heap yang sangat terkompresi. Hal ini menghilangkan overhead pembuatan objek JVM dan mencegah jeda pembersihan sampah memori dari pembekuan thread eksekutor.
Menjalankan Spark open source secara tradisional memerlukan konfigurasi cluster manual, pengelolaan versi software, dan peering jaringan yang kompleks. Google Cloud menyederhanakan hal ini dengan menawarkan Managed Service untuk Apache Spark, yang mengubah eksekusi terdistribusi menjadi platform data yang terkelola sepenuhnya dan siap digunakan perusahaan.
Tim data menjalankan workload Spark DataFrame di Google Cloud menggunakan kemampuan berikut:
Mulailah membangun solusi di Google Cloud dengan kredit gratis senilai $300 dan lebih dari 20 produk yang selalu gratis.