Bagikan melalui


Menyesuaikan kode Apache Spark anda yang sudah ada untuk Azure Databricks

Artikel ini menguraikan perubahan yang diperlukan untuk menyesuaikan beban kerja Apache Spark yang ada untuk dijalankan di Azure Databricks. Baik Anda pindah ke Azure Databricks dari kluster lokal, infrastruktur berbasis cloud kustom, atau penawaran Apache Spark perusahaan lainnya, sebagian besar beban kerja hanya memerlukan beberapa perubahan untuk masuk ke produksi. Azure Databricks memperluas, menyederhanakan, dan meningkatkan performa Apache Spark dengan memperkenalkan pengoptimalan kustom, mengonfigurasi dan menyebarkan infrastruktur, dan mempertahankan dependensi di Databricks Runtime.

Penting

Saat Anda meningkatkan versi Apache Spark, mungkin ada perubahan yang melanggar pada sintaks. Lihat Versi dan kompatibilitas catatan rilis Databricks Runtime serta panduan migrasi Spark.

Ubah parquet menjadi delta

Databricks merekomendasikan penggunaan Delta Lake alih-alih Parquet atau ORC saat menulis data. Azure Databricks telah mengoptimalkan banyak fitur untuk efisiensi saat berinteraksi dengan tabel yang didukung oleh Delta Lake, dan meningkatkan data dan formulir kode Parquet ke Delta Lake hanya mengambil beberapa langkah. Lihat Memigrasikan data lake Parquet ke Delta Lake.

Karena Delta Lake memberikan jaminan transaksi ACID, Anda mungkin dapat menyederhanakan beban kerja untuk menghapus solusi yang diarahkan untuk membuat transaksionalitas semu dalam operasi Apache Spark. Contohnya meliputi:

  • Membangun struktur direktori atau strategi partisi yang memungkinkan semua file dari operasi tertentu ditemukan secara bersamaan sebagai bagian dari partisi.
  • Mengonfigurasi atau mengandalkan metastore untuk menambahkan transaksionalitas tentang bagaimana data baru ditemukan.
  • Menggunakan MSCK repair untuk mendaftarkan file yang ditulis ke tabel ke metastore.
  • Menggunakan alter table add partition untuk menambahkan partisi secara manual ke tabel.

Lihat Kapan harus mempartisi tabel di Azure Databricks.

Catatan

Anda dapat menjalankan beban kerja tanpa memutakhirkan format data yang digunakan, tetapi banyak keuntungan performa terbesar di Azure Databricks terikat langsung ke Delta Lake.

Mengkompilasi ulang kode Apache Spark dengan pustaka yang kompatibel dengan Databricks Runtime

Setiap versi Databricks Runtime telah dikonfigurasi sebelumnya dengan banyak pustaka yang diperlukan dalam aplikasi Apache Spark. Anda dapat menginstal pustaka tambahan ke komputasi Anda sesuai kebutuhan, tetapi jika memungkinkan, Databricks merekomendasikan penggunaan versi pustaka yang dimas dalam Databricks Runtime yang diuji untuk kompatibilitas. Setiap rilis Databricks Runtime menyertakan daftar semua pustaka yang diinstal. Lihat Versi dan kompatibilitas catatan rilis Databricks Runtime.

Menghapus perintah pembuatan SparkSession

Banyak beban kerja Apache Spark warisan secara eksplisit mendeklarasikan SparkSession baru untuk setiap pekerjaan. Azure Databricks secara otomatis membuat SparkContext untuk setiap kluster komputasi, dan membuat SparkSession terisolasi untuk setiap notebook atau pekerjaan yang dijalankan terhadap kluster. Anda dapat mempertahankan kemampuan untuk mengkompilasi dan menguji kode secara lokal lalu menyebarkan ke Azure Databricks dengan meningkatkan perintah ini untuk menggunakan SparkSession.builder().getOrCreate().

Menghapus perintah skrip terminal

Apache Spark mengharuskan program untuk secara eksplisit menyatakan bahwa program tersebut selesai dengan menggunakan perintah seperti sys.exit() atau sc.stop(). Azure Databricks secara otomatis mengakhiri dan membersihkan pekerjaan saat mencapai penyelesaian, sehingga perintah ini tidak diperlukan dan harus dihapus.

Azure Databricks juga secara otomatis mengakhiri dan membersihkan beban kerja Streaming Terstruktur saat penghentian eksekusi, sehingga Anda dapat menghapus awaitTermination() dan perintah serupa dari aplikasi Streaming Terstruktur.

Percayai Azure Databricks untuk mengonfigurasi kluster Anda

Azure Databricks mengonfigurasi semua pengaturan untuk driver dan pelaksana di kluster komputasi Anda secara otomatis untuk memaksimalkan ketahanan dan penggunaan sumber daya. Menyediakan konfigurasi kustom untuk pelaksana atau JVM dapat mengakibatkan penurunan performa. Databricks hanya merekomendasikan pengaturan konfigurasi Spark yang diperlukan untuk mengontrol penanganan jenis atau fungsi sehingga logika tetap konsisten.

Menjalankan beban kerja Anda

Sekarang setelah Anda menghapus pola, perintah, dan pengaturan yang mungkin mengganggu eksekusi Azure Databricks, Anda dapat menjalankan beban kerja di lingkungan pengujian dan membandingkan performa dan hasil dengan infrastruktur warisan Anda. Meskipun banyak keterampilan yang mungkin dikembangkan tim Anda untuk memecahkan masalah dan meningkatkan performa untuk beban kerja Apache Spark masih dapat dimanfaatkan di Azure Databricks, lebih sering Anda dapat melihat keuntungan yang lebih besar dari peningkatan langkah-langkah untuk menggunakan fitur baru di Apache Spark, Delta Lake, atau produk Azure Databricks kustom.