Bagikan melalui


Data agregat pada Azure Databricks

Artikel ini memperkenalkan semantik umum untuk agregasi dan membahas perbedaan antara hasil yang dihitung menggunakan kueri batch, tampilan materialisasi, dan streaming.

Penggabungan Batch

Agregasi batch adalah perilaku default yang diamati saat menjalankan kueri ad hoc di SQL atau memproses data dengan Apache Spark DataFrames.

Kueri agregat yang ditulis terhadap tabel atau sumber data menghitung statistik agregat untuk semua rekaman di sumber data. Azure Databricks memanfaatkan pengoptimalan dan metadata jika memungkinkan untuk mengoptimalkan kueri ini, dan dapat menghitung banyak agregat dengan efisien untuk himpunan data besar.

Latensi agregasi batch dan biaya komputasi dapat meningkat saat ukuran data meningkat, dan nilai agregat yang sering direferensikan sebelumnya dapat menghemat waktu dan uang yang substansial bagi pengguna. Databricks merekomendasikan penggunaan tampilan materialisasi untuk memperbarui nilai agregat secara bertahap. Lihat Agregat inkremental.

Agregat yang Stateful

Agregat yang ditentukan dalam beban kerja streaming bersifat stateful. Agregat stateful melacak rekaman yang diamati dari waktu ke waktu dan menghitung ulang hasil saat memproses data baru.

Anda harus menggunakan marka air saat menghitung agregat dengan status. Mengabaikan watermark dari kueri agregat stateful mengakibatkan penumpukan informasi status seiring dengan waktu. Ini mengakibatkan perlambatan pemrosesan dan dapat menyebabkan kesalahan kehabisan memori.

Anda tidak boleh menggunakan agregat stateful untuk menghitung statistik di seluruh himpunan data. Databricks merekomendasikan penggunaan tampilan materialisasi untuk perhitungan agregat inkremental pada seluruh himpunan data. Lihat Agregat inkremental.

Mengonfigurasi pekerjaan yang memproses agregat stateful dengan efisiensi dan ketepatan memerlukan pemahaman bagaimana data tiba dari sistem sumber dan bagaimana Azure Databricks menggunakan marka air, mode keluaran, dan interval pemicu untuk mengendalikan status kueri dan pemrosesan hasil.

Agregat inkremental

Anda dapat menggunakan tampilan materialisasi untuk menghitung banyak nilai agregat secara bertahap. Tampilan materialisasi secara otomatis melacak perubahan di sumber data dan menerapkan pembaruan yang sesuai untuk nilai agregat saat refresh. Hasil yang dikembalikan oleh tampilan materialisasi setara dengan hasil yang diperoleh dengan menghitung ulang hasil agregat pada data sumber menggunakan proses batch atau kueri ad hoc.

Perkiraan agregat

Meskipun Azure Databricks unggul dalam komputasi pada himpunan data yang sangat besar, menggunakan perkiraan untuk agregat dapat mempercepat pemrosesan kueri dan mengurangi biaya saat Anda tidak memerlukan hasil yang tepat.

Menggunakan LIMIT pernyataan terkadang cukup baik untuk mendapatkan rekam jepret data yang cepat, tetapi tidak memperkenalkan keacakan, atau menjamin bahwa pengambilan sampel didistribusikan di seluruh himpunan data.

Spark SQL memiliki metode bawaan berikut untuk mendekati agregasi pada data numerik atau kategoris:

Anda juga dapat menentukan persentase sampel dengan TABLESAMPLE untuk menghasilkan sampel acak dari himpunan data dan menghitung perkiraan agregat. Lihat klausa TABLESAMPLE.

Memantau himpunan data menggunakan statis agregat

Pembuatan profil data menggunakan statistik agregat dan distribusi data untuk melacak kualitas data dari waktu ke waktu. Anda dapat membuat laporan untuk memvisualisasikan tren dan menjadwalkan pemberitahuan untuk menandai perubahan data yang tidak terduga. Lihat Pembuatan profil data.