Bagikan melalui


Data agregat di Azure Databricks

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

Agregat 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 stateful

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

Anda harus menggunakan marka air saat menghitung agregat stateful. Mengabaikan watermark dari kueri agregat stateful mengakibatkan penumpukan informasi status seiring dengan waktu. Ini mengakibatkan pemrosesan perlambatan dan dapat menyebabkan kesalahan di luar 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 beban kerja yang menghitung agregat stateful secara efisien dan benar memerlukan pemahaman bagaimana data tiba dari sistem sumber dan bagaimana Azure Databricks menggunakan marka air, mode output, dan interval pemicu untuk mengontrol status kueri dan komputasi 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 materialzed setara dengan yang dikembalikan dengan merekomputasi hasil agregat pada data sumber dengan pekerjaan 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 asli berikut untuk menyetujui 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.