Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara menyiapkan dan menggunakan kebijakan peristiwa keterlambatan kedatangan dan tidak berurutan di Azure Stream Analytics. Kebijakan ini hanya diterapkan saat Anda menggunakan klausul TIMESTAMP BY di kueri Anda, dan kebijakan ini hanya diterapkan untuk sumber input cloud.
Waktu peristiwa dan Waktu Kedatangan
Pekerjaan Analisis Aliran dapat memproses peristiwa berdasarkan waktu peristiwa atau waktu kedatangan. Waktu peristiwa/aplikasi adalah tanda waktu yang ada dalam muatan peristiwa (ketika peristiwa dihasilkan). Waktu kedatangan adalah tanda waktu ketika peristiwa diterima di sumber input (Pusat Aktivitas/IoT Hub/penyimpanan Blob).
Secara default, Analisis Aliran memproses peristiwa berdasarkan waktu kedatangan, tetapi Anda dapat memilih untuk memproses peristiwa berdasarkan waktu peristiwa menggunakan klausul TIMESTAMP BY di kueri Anda. Kebijakan keterlambatan kedatangan dan tidak berurutan hanya berlaku jika Anda memproses peristiwa berdasarkan waktu peristiwa. Pertimbangkan persyaratan latensi dan kebenaran untuk skenario Anda saat mengonfigurasi pengaturan ini.
Apa itu kebijakan keterlambatan kedatangan?
Terkadang peristiwa datang terlambat karena berbagai alasan. Misalnya, peristiwa yang datang terlambat 40 detik akan memiliki waktu acara = 00:10:00 dan waktu kedatangan = 00:10:40. Jika Anda menetapkan kebijakan keterlambatan kedatangan menjadi 15 detik, peristiwa apa pun yang tiba lebih dari 15 detik akan dibatalkan (tidak diproses oleh Analisis Aliran) atau waktu acaranya disesuaikan. Dalam contoh di atas, ketika peristiwa datang terlambat 40 detik (lebih dari yang ditetapkan kebijakan), waktu peristiwanya akan disesuaikan dengan maksimum kebijakan kedatangan terlambat 00:10:25 (waktu kedatangan - nilai kebijakan kedatangan terlambat). Kebijakan kedatangan terlambat default adalah 5 detik.
Apa itu kebijakan yang tidak berurutan?
Peristiwa mungkin juga datang tidak berurutan. Setelah waktu acara disesuaikan berdasarkan kebijakan keterlambatan kedatangan, Anda juga dapat memilih untuk secara otomatis membatalkan atau menyesuaikan acara yang tidak berurutan. Jika Anda mengatur kebijakan ini ke 8 detik, setiap peristiwa yang tiba tidak berurutan, tetapi dalam jendela 8 detik, diurutkan ulang menurut waktu peristiwa. Peristiwa yang tiba nanti akan dibatalkan atau disesuaikan dengan nilai kebijakan maksimal yang tidak berurutan. Kebijakan default yang tidak berurutan adalah 0 detik.
Menyesuaikan atau Membatalkan peristiwa
Jika peristiwa datang terlambat atau tidak sesuai pesanan berdasarkan kebijakan yang telah Anda konfigurasikan, Anda dapat membatalkan peristiwa tersebut (tidak diproses oleh Analisis Aliran) atau menyesuaikan waktu acaranya.
Mari kita lihat contoh kebijakan ini dalam tindakan.
Kebijakan kedatangan terlambat: 15 detik
Kebijakan yang tidak berurutan: 5 detik
| No. Peristiwa | Waktu Peristiwa | Waktu Kedatangan | System.Timestamp | Penjelasan |
|---|---|---|---|---|
| 1 | 00:10:00 | 00:10:40 | 00:10:25 | Peristiwa tiba terlambat dan di luar tingkat toleransi. Jadi waktu peristiwa akan disesuaikan dengan toleransi kedatangan terlambat maksimum. |
| 2 | 00:10:30 | 00:10:41 | 00:10:30 | Peristiwa datang terlambat tetapi dalam tingkat toleransi. Jadi, waktu peristiwa tidak disesuaikan. |
| 3 | 00:10:42 | 00:10:42 | 00:10:42 | Peristiwa tiba tepat waktu. Tidak perlu penyesuaian. |
| 4 | 00:10:38 | 00:10:43 | 00:10:38 | Peristiwa terjadi secara tidak berurutan tetapi dalam toleransi 5 detik. Jadi, waktu peristiwa tidak disesuaikan. Untuk tujuan analitik, peristiwa ini akan dianggap sebagai peristiwa sebelumnya nomor 3 (dengan mempertimbangkan total 5 peristiwa. Urutan aktual adalah: 1, 2, 5, 4, 3). |
| 5 | 00:10:35 | 00:10:45 | 00:10:37 | Peristiwa terjadi secara tidak berurutan dan melebihi toleransi 5 detik. Jadi, waktu peristiwa disesuaikan dengan toleransi tidak berurutan maksimal. |
Dapatkah pengaturan ini menunda output pekerjaan saya?
Ya. Secara default, kebijakan tidak berurutan diatur ke nol (00 menit dan 00 detik). Jika Anda mengubah default, output pertama pekerjaan tertunda oleh nilai ini (atau lebih besar).
Jika salah satu partisi input tidak menerima peristiwa, output akan tertunda oleh nilai kebijakan kedatangan yang terlambat. Untuk mempelajari alasannya, baca bagian kesalahan InputPartition di bawah ini.
Saya melihat pesan LateInputEvents di log aktivitas saya
Pesan-pesan ini ditunjukkan untuk memberi tahu Anda bahwa peristiwa datang terlambat dan dibatalkan atau disesuaikan sesuai dengan konfigurasi Anda. Anda dapat mengabaikan pesan ini jika Anda telah mengonfigurasi kebijakan keterlambatan kedatangan dengan tepat.
Contoh pesan ini adalah:
{"message Time":"2019-02-04 17:11:52Z","error":null,
"message":"First Occurred: 02/04/2019 17:11:48 | Resource Name: ASAjob | Message: Source 'ASAjob' had 24 data errors of kind 'LateInputEvent' between processing times '2019-02-04T17:10:49.7250696Z' and '2019-02-04T17:11:48.7563961Z'. Input event with application timestamp '2019-02-04T17:05:51.6050000' and arrival time '2019-02-04T17:10:44.3090000' was sent later than configured tolerance.","type":"DiagnosticMessage","correlation ID":"aaaa0000-bb11-2222-33cc-444444dddddd"}
Saya melihat InputPartitionNotProgressing di log aktivitas saya
Sumber input Anda (Pusat Aktivitas/IoT Hub) kemungkinan memiliki beberapa partisi. Azure Stream Analytics menghasilkan output untuk tanda waktu t1 hanya setelah semua partisi yang digabungkan setidaknya pada saat t1. Misalnya, asumsikan bahwa kueri diinterpretasi dari partisi hub peristiwa yang memiliki dua partisi. Salah satu partisi, P1, memiliki peristiwa sampai waktu t1. Partisi lainnya, P2, memiliki peristiwa hingga waktu t1 + x. Output kemudian diproduksi hingga waktu t1. Tetapi jika ada partisi eksplisit oleh klausul PartitionId, kedua partisi maju secara independen.
Ketika beberapa partisi dari aliran input yang sama digabungkan, toleransi kedatangan terlambat adalah jumlah waktu maksimum setiap partisi menunggu data baru. Jika ada satu partisi di pusat aktivitas Anda atau jika IoT Hub tidak menerima input, garis waktu untuk partisi tersebut tidak mengalami kemajuan hingga mencapai ambang toleransi kedatangan terlambat. Ini menunda output dengan ambang toleransi kedatangan terlambat. Dalam kasus seperti itu, Anda mungkin melihat pesan berikut:
{"message Time":"2/3/2019 8:54:16 PM UTC","message":"Input Partition [2] does not have additional data for more than [5] minute(s). Partition will not progress until either events arrive or late arrival threshold is met.","type":"InputPartitionNotProgressing","correlation ID":"0000000000-0000-0000-0000-00000000000000"}
Pesan ini untuk memberi tahu Anda bahwa setidaknya satu partisi dalam input kosong dan akan menunda output dengan ambang kedatangan terlambat. Untuk mengatasinya, sebaiknya Anda:
- Memastikan semua partisi Pusat Aktivitas/IoT Hub menerima input.
- Menggunakan Partisi menurut klausa PartitionID dalam kueri.
Mengapa saya melihat penundaan 5 detik bahkan ketika kebijakan kedatangan terlambat saya diatur ke 0?
Hal ini terjadi ketika ada partisi input yang belum pernah menerima input apa pun. Anda dapat memverifikasi metrik input berdasarkan partisi untuk memvalidasi perilaku ini.
Ketika partisi tidak memiliki data apa pun untuk lebih dari ambang batas kedatangan terlambat yang dikonfigurasi, analisis aliran memajukan stempel waktu aplikasi seperti yang dijelaskan di bagian pertimbangan pemesanan peristiwa. Ini membutuhkan perkiraan waktu kedatangan. Jika partisi tidak pernah memiliki data apa pun, analitik streaming memperkirakan waktu kedatangan sebagai waktu setempat - 5 detik. Oleh karena itu, partisi yang tidak pernah memiliki data dapat menunjukkan penundaan marka air 5 detik.