Apa itu Photon?

Photon adalah mesin kueri vektorisasi asli Azure Databricks yang mempercepat beban kerja SQL, panggilan API DataFrame, alur ETL, dan beban kerja streaming stateless Anda. Photon memproses data dalam batch kolumnar, memberikan peningkatan kinerja yang signifikan dibandingkan dengan eksekusi berbasis baris tradisional. Photon juga kompatibel dengan API Apache Spark, sehingga berfungsi dengan kode yang ada tanpa memerlukan perubahan.

Cara kerja Photon

Untuk operasi yang didukung, Photon menggantikan mesin eksekusi Spark SQL berbasis JVM dengan runtime C++ asli. Pengoptimal kueri Apache Spark (Catalyst) masih menyusun rencana eksekusi kueri Anda, tetapi Photon mengambil alih di lapisan eksekusi, memproses data dalam batch kolumnar, bukan baris demi baris. Ketika Photon menemui operasi yang tidak didukung selama eksekusi kueri, sistem ini secara transparan beralih ke runtime Spark untuk melanjutkan sisa operasi tersebut.

Foton memproses data dalam batch ribuan baris sekaligus, memungkinkan CPU modern menggunakan instruksi SIMD yang mengevaluasi beberapa nilai per siklus CPU. Dengan menjalankan di C++ asli alih-alih JVM, Photon menghilangkan jeda pengumpulan sampah, penundaan pemanasan JIT, dan overhead memori. Pemrosesan batch kolom memungkinkan pembacaan berurutan yang ramah cache, yang memaksimalkan bandwidth memori dan efisiensi alur CPU.

Arsitektur Photon meningkatkan performa dengan sejumlah cara:

  • Akselerasi kueri: Photon memberikan harga/performa hingga 5x lebih baik untuk beban kerja data dan analitik dibandingkan dengan gudang data cloud lainnya, sebagaimana diukur oleh tolok ukur TPC-DS standar industri.
  • Gabungan dan pengacakan yang dioptimalkan: Mengganti gabungan sort-merge dengan gabungan hash berkinerja tinggi dan menggunakan pengacakan kolumnar yang didesain ulang untuk meningkatkan throughput untuk gabungan skala besar.
  • Performa penulisan: Penulis Parquet native Photon mempercepat penulisan Delta Lake, Apache Iceberg, dan Parquet, termasuk operasi UPDATE, DELETE, MERGE INTO, INSERT, dan CREATE TABLE AS SELECT. Tabel lebar dengan ribuan kolom melihat peningkatan yang sangat signifikan.
  • Efisiensi pemindaian: Menerapkan filter pushdown, pemangkasan kamus, dan pengabaian grup baris untuk mengurangi data yang dibaca dari penyimpanan, bahkan saat menangani banyak file kecil.
  • Cache disk dan konkurensi: Menyediakan akses ulang yang lebih cepat melalui cache disk dan meningkatkan throughput untuk kueri simultan dalam beban kerja BI interaktif.
  • Integration dengan SQL dan Dataframes API: Mendukung API SQL dan DataFrame di seluruh Python, R, Scala, dan Java tanpa memerlukan perubahan kode.

Photon memberikan manfaat terbesar untuk kueri berjangka waktu lebih lama yang memproses dataset besar. Kueri yang biasanya selesai dalam waktu kurang dari dua detik tidak melihat peningkatan yang bermakna karena waktu eksekusi didominasi oleh perencanaan dan penjadwalan overhead daripada pemrosesan data.

Integrasi dengan platform Azure Databricks

Photon mempercepat beban kerja di seluruh platform Azure Databricks. Anda tidak perlu mengubah kode atau kueri untuk memanfaatkan Photon.

  • Analitik SQL dan BI: Photon adalah mesin default untuk semua gudang data SQL, yang mendukung dasbor, kueri ad hoc, dan laporan terjadwal.
  • ETL dan rekayasa data: Pekerjaan batch yang dibangun dengan SQL atau API DataFrame mendapat manfaat dari pemindaian, gabungan, agregasi, dan penulisan yang lebih cepat. Penulis Parquet bawaan sangat efektif untuk memuat data ke dalam tabel Delta Lake, Apache Iceberg, atau Parquet.
  • Alur Deklaratif Lakeflow Spark: Mengaktifkan Photon dalam konfigurasi alur Anda membantu mempercepat eksekusi Alur Deklaratif Lakeflow Spark .
  • Streaming: Photon mendukung streaming stateless saat menulis ke sink Delta atau Parquet. Sumber yang didukung termasuk Delta, Parquet, CSV, JSON, Kafka, dan Kinesis. Streaming stateful tidak didukung.
  • AI dan pembelajaran mesin: Photon meningkatkan performa untuk operasi Spark SQL, DataFrames, rekayasa fitur, dan GraphFrames.

Pengaktifan foton

Photon selalu diaktifkan pada komputasi tanpa server, gudang SQL, dan alur Alur Deklaratif Lakeflow Spark tanpa server.

Untuk komputasi serba guna klasik, komputasi pekerjaan, dan alur Alur Deklaratif Lakeflow Spark klasik, Photon diaktifkan secara default dan dapat diubah dengan kotak centang Gunakan Akselerasi Foton di bawah Performa saat membuat atau mengedit komputasi. Lihat Menggunakan akselerasi Photon. Jika Anda membuat sumber daya ini menggunakan CLUSTERs API atau Jobs API, Anda harus secara eksplisit mengaktifkan Photon dengan mengatur runtime_engine ke PHOTON. Jika Anda menggunakan Pipelines API, atur photon ke true.

Fitur yang memerlukan pengaktifan Photon

Fitur berikut memerlukan pengaktifan Photon:

Jenis instans yang didukung

Photon mendukung sejumlah tipe instans pada node driver dan node pekerja. Jenis instans photon menggunakan DBU pada tingkat yang berbeda dari jenis instans yang sama yang menjalankan runtime non-Photon. Untuk informasi lebih lanjut tentang instans Photon dan konsumsi DBU, lihat halaman harga Azure Databricks.

Operator, ekspresi, dan jenis data yang didukung

Foton mencakup operator, ekspresi, dan jenis data berikut. Saat kueri menggunakan operasi yang tidak didukung, Photon secara transparan kembali ke runtime Spark untuk bagian eksekusi tersebut.

Operator

  • Pindai (Parquet, Delta, CSV, JSON), Penyaringan, Proyeksi
  • Hash Agregat/Gabung/Acak
  • gabungan Nested-Loop
  • Null-Aware Penggabungan Anti
  • Join Spasial (varian broadcast dan shuffle yang mendukung ST_Intersects, ST_Contains, ST_Covers, ST_Equals, ST_Touches, ST_Within, dan ST_DWithin)
  • Gabungan, Perluasan, ScalarSubquery
  • Penulisan Sink Delta/Parquet
  • Urutkan, TopK, Batas
  • Fungsi Jendela

Ekspresi

Kategori ini representatif, tidak lengkap. Fungsi individual dalam setiap kategori mungkin memiliki batasan.

  • Perbandingan/Logika
  • Aritmatika / Matematika
  • Kondisional (IF, CASE, dll.)
  • String
  • Menyiarkan
  • Fungsi agregat, termasuk Min/Max/MinBy/MaxBy pada tipe bertingkat
  • Tanggal/Tanda Waktu/Format Tanggal

Jenis data

  • Byte/Pendek/Int/Panjang
  • Boolean
  • String/Biner
  • Desimal
  • Float/Double
  • Tanggal/Stempel waktu
  • TimestampNTZ
  • Struktur
  • Array
  • Peta
  • Variant
  • Null
  • Geometri
  • Geografi
  • String yang disatukan

Memantau penggunaan Foton

Anda dapat memantau berapa banyak kueri yang berjalan di Photon menggunakan alat berikut:

  • Spark UI (komputasi semua tujuan dan pekerjaan klasik): Di tab SQL/DataFrame dari Spark UI, operator Photon muncul dengan warna oranye dalam visualisasi DAG kueri. Operator Spark standar muncul dengan warna biru. Ini membantu Anda mengidentifikasi bagian mana dari kueri Anda yang mendapat manfaat dari Photon dan bagian mana yang kembali menggunakan runtime Spark.
  • Profil kueri (gudang SQL dan komputasi tanpa server): Tampilan Detail Eksekusi menunjukkan persentase waktu tugas yang dihabiskan di Photon. Rencana kueri membedakan operator Photon (ungu) dari operator standar (abu-abu).

Jika Anda melihat bahwa kueri tidak menggunakan Photon seperti yang diharapkan, periksa apakah kueri tersebut menggunakan operasi, UDF, atau format data yang tidak didukung sehingga beralih kembali ke runtime Spark.

Batasan

  • Jika beban kerja Anda mencapai operasi yang tidak didukung, sumber daya komputasi secara transparan beralih ke runtime Spark untuk sisa operasi tersebut. Kueri Anda masih menghasilkan hasil yang benar.
  • Photon tidak mendukung UDF (User Defined Functions), API RDD, atau API Himpunan Data.
  • Streaming stateful tidak didukung. Photon hanya mendukung streaming stateless.
  • Photon tidak meningkatkan kueri yang biasanya berjalan dalam waktu kurang dari dua detik.