Bagikan melalui


PySpark di Azure Databricks

Azure Databricks dibangun di atas Apache Spark, mesin analitik terpadu untuk big data dan pembelajaran mesin. PySpark membantu Anda berinteraksi dengan Apache Spark menggunakan bahasa pemrograman Python, yang merupakan bahasa fleksibel yang mudah dipelajari, diimplementasikan, dan dikelola. Ini juga menyediakan banyak opsi untuk visualisasi data di Databricks. PySpark menggabungkan kekuatan Python dan Apache Spark.

Artikel ini memberikan gambaran umum tentang dasar-dasar PySpark di Databricks.

Pengantar konsep Spark

Penting untuk memahami konsep Utama Apache Spark sebelum menyelam menggunakan PySpark.

DataFrames

DataFrame adalah objek utama di Apache Spark. DataFrame adalah himpunan data yang diatur ke dalam kolom bernama. Anda dapat memikirkan DataFrame seperti spreadsheet atau tabel SQL, struktur data berlabel dua dimensi dari serangkaian rekaman (mirip dengan baris dalam tabel) dan kolom dari berbagai jenis. DataFrame menyediakan serangkaian fungsi yang kaya (misalnya, memilih kolom, filter, gabung, dan agregat) yang memungkinkan Anda melakukan tugas manipulasi dan analisis data umum secara efisien.

Beberapa elemen DataFrame penting meliputi:

  • Skema: Skema menentukan nama kolom dan jenis DataFrame. Format data memiliki semantik yang berbeda untuk definisi dan penerapan skema. Beberapa sumber data memberikan informasi skema, sementara yang lain mengandalkan definisi skema manual atau memungkinkan inferensi skema. Pengguna dapat menentukan skema secara manual atau skema dapat dibaca dari sumber data.
  • Baris: Spark mewakili catatan dalam DataFrame sebagai objek Row. Meskipun format data mendasar seperti Delta Lake menggunakan kolom untuk menyimpan data, untuk pengoptimalan Spark menyimpan dalam cache dan mengubah urutan data menggunakan baris.
  • Kolom: Kolom di Spark mirip dengan kolom dalam spreadsheet dan dapat mewakili jenis sederhana seperti string atau bilangan bulat, tetapi juga jenis kompleks seperti array, peta, atau null. Anda dapat menulis kueri yang memilih, memanipulasi, atau menghapus kolom dari sumber data. Sumber data yang mungkin mencakup tabel, tampilan, file, atau DataFrames lainnya. Kolom tidak pernah dihapus dari himpunan data atau DataFrame, kolom tersebut hanya dihilangkan dari hasil melalui transformasi .drop atau kelalaian dalam pernyataan select.

Pemrosesan data

Apache Spark menggunakan lazy evaluation untuk memproses transformasi dan tindakan yang ditentukan melalui DataFrames. Konsep-konsep ini sangat mendasar untuk memahami pemrosesan data dengan Spark.

Transformasi: Di Spark Anda mengekspresikan logika pemrosesan sebagai transformasi, yang merupakan instruksi untuk memuat dan memanipulasi data menggunakan DataFrames. Transformasi umum termasuk membaca data, penggabungan, agregasi, dan konversi tipe. Untuk informasi tentang transformasi di Azure Databricks, lihat Apa itu transformasi data di Azure Databricks?.

Lazy Evaluation: Spark mengoptimalkan pemrosesan data dengan mengidentifikasi rencana fisik paling efisien untuk mengevaluasi logika yang ditentukan oleh transformasi. Namun, Spark tidak bertindak berdasarkan transformasi sampai ada tindakan yang dipanggil. Daripada mengevaluasi setiap transformasi dalam urutan yang ditentukan, Spark menunggu hingga tindakan memicu komputasi pada semua transformasi. Ini dikenal sebagai evaluasi malas, atau pemuatan malas, yang memungkinkan Anda untuk menggabungkan beberapa operasi karena Spark menangani eksekusi dengan menundanya, alih-alih langsung mengeksekusi ketika operasi tersebut ditentukan.

Catatan

Evaluasi tunda berarti bahwa DataFrames mengatur kueri logis sebagai serangkaian instruksi terhadap sumber data daripada hasil dalam memori. Ini bervariasi secara drastis dari eksekusi yang bersemangat, yang merupakan model yang digunakan oleh Pandas DataFrames.

Tindakan: Tindakan menginstruksikan Spark untuk menghitung hasil dari serangkaian transformasi pada satu atau beberapa DataFrame. Operasi tindakan mengembalikan nilai, dan bisa menjadi salah satu dari yang berikut ini:

  • Tindakan untuk menghasilkan data di konsol atau editor Anda, seperti display atau show
  • Tindakan untuk mengumpulkan data (mengembalikan Row objek), seperti take(n), dan first atau head
  • Aksi untuk menulis pada sumber data, seperti saveAsTable
  • Agregasi yang memicu komputasi, seperti count

Penting

Dalam alur data produksi, menulis data biasanya merupakan satu-satunya tindakan yang harus ada. Semua tindakan lainnya mengganggu pengoptimalan kueri dan dapat menyebabkan hambatan.

Apa artinya DataFrames tidak dapat diubah?

DataFrames adalah kumpulan transformasi dan tindakan yang ditentukan terhadap satu atau beberapa sumber data, tetapi pada akhirnya Apache Spark menyelesaikan kueri kembali ke sumber data asli, sehingga data itu sendiri tidak diubah, dan tidak ada DataFrame yang diubah. Dengan kata lain, DataFrames tidak dapat diubah. Karena itu, setelah melakukan transformasi, DataFrame baru dikembalikan yang harus disimpan ke variabel untuk mengaksesnya dalam operasi berikutnya. Jika Anda ingin mengevaluasi langkah perantara transformasi Anda, jalankan sebuah aksi.

API dan pustaka

Seperti semua API untuk Spark, PySpark dilengkapi dengan banyak API dan pustaka yang memungkinkan dan mendukung fungsionalitas yang kuat, termasuk:

  • Pemrosesan data terstruktur dengan kueri relasional dengan Spark SQL dan DataFrames. Spark SQL memungkinkan Anda mencampur kueri SQL dengan program Spark. Dengan Spark DataFrames, Anda dapat membaca, menulis, mengubah, dan menganalisis data secara efisien menggunakan Python dan SQL, yang berarti Anda selalu memanfaatkan kekuatan penuh Spark. Lihat Panduan Memulai PySpark.
  • Pemrosesan aliran yang dapat diskalakan dengan Streaming Terstruktur. Anda dapat mengekspresikan komputasi streaming dengan cara yang sama seperti Anda akan mengekspresikan komputasi batch pada data statis dan mesin Spark SQL menjalankannya secara bertahap dan terus menerus saat data streaming terus tiba. Lihat Gambaran Umum Streaming Terstruktur.
  • Struktur data Pandas dan alat analisis data yang berfungsi di Apache Spark dengan Pandas API di Spark. Pandas API di Spark memungkinkan Anda menskalakan beban kerja Pandas Anda ke ukuran apa pun dengan menjalankannya secara terdistribusi di beberapa simpul, menggunakan satu kode tunggal yang dapat digunakan dengan Pandas (untuk pengujian, himpunan data yang lebih kecil) dan dengan Spark (untuk produksi, himpunan data terdistribusi). Lihat Pandas API pada Gambaran Umum Spark.
  • Algoritma pembelajaran mesin dengan Pembelajaran Mesin (MLLib). MLlib adalah pustaka pembelajaran mesin yang dapat diskalakan yang dibangun di Spark yang menyediakan serangkaian API seragam yang membantu pengguna membuat dan menyetel alur pembelajaran mesin praktis. Lihat Gambaran Umum Pustaka Pembelajaran Mesin.
  • Grafik dan komputasi paralel grafik dengan GraphX. GraphX memperkenalkan multigraf terarah baru dengan properti yang melekat pada setiap simpul dan sisi, serta menyediakan operator komputasi grafik, algoritma, dan penyusun yang menyederhanakan tugas analitik grafik. Lihat Gambaran Umum GraphX.

Tutorial Spark

Untuk contoh penggunaan PySpark on Databricks, lihat artikel berikut ini:

Dokumentasi Apache Spark juga memiliki panduan memulai cepat dan panduan untuk mempelajari Spark, termasuk sebagai berikut:

Referensi PySpark

Azure Databricks mempertahankan versi API PySpark sendiri dan referensi terkait, yang dapat ditemukan di bagian ini: