Keluaran dari Azure Stream Analytics

Pekerjaan Azure Stream Analytics terdiri dari input, kueri, dan output. Anda dapat mengirim data yang diubah ke beberapa jenis output. Artikel ini mencantumkan output Azure Stream Analytics yang didukung. Saat Anda merancang kueri Stream Analytics, rujuk nama output dengan klausa INTO. Anda dapat menggunakan satu output per pekerjaan, atau beberapa output per pekerjaan streaming dengan menambahkan beberapa klausa INTO ke kueri.

Untuk membuat, mengedit, dan menguji output pekerjaan Azure Stream Analytics, Anda dapat menggunakan portal Microsoft Azure, Azure PowerShell, .NET API, REST API, Visual Studio, dan Visual Studio Code.

Nota

Untuk pengalaman pengembangan lokal terbaik, gunakan alat Azure Stream Analytics untuk Visual Studio Code. Alat Azure Stream Analytics untuk Visual Studio 2019 (versi 2.6.3000.0) memiliki kesenjangan fitur yang diketahui dan tidak akan ditingkatkan lagi ke depannya.

Beberapa jenis output mendukung pemartisian seperti yang ditunjukkan dalam tabel berikut.

Semua output mendukung batching, tetapi hanya beberapa dukungan yang mengatur ukuran batch output secara eksplisit. Untuk informasi selengkapnya, lihat bagian ukuran batch keluaran.

Jenis output Partitioning Keamanan
Azure Data Explorer Yes Identitas yang Dikelola
Azure Functions Yes Kunci akses
Azure Synapse Analytics Yes Autentikasi pengguna SQL,
Identitas Terkelola
Penyimpanan blob dan Azure Data Lake Gen 2 Yes Kunci akses,
Identitas Terkelola
Azure Cosmos DB Yes Kunci akses,
Identitas Terkelola
Azure Data Lake Storage Gen 2 Yes Identitas Terkelola pengguna
Microsoft Entra
Azure Event Hubs Ya, perlu mengatur kolom kunci partisi dalam konfigurasi output. Kunci akses,
Identitas Terkelola
Kafka (pratinjau) Ya, perlu mengatur kolom kunci partisi dalam konfigurasi output. Kunci akses,
Identitas Terkelola
Azure Database for PostgreSQL Yes Autentikasi nama pengguna dan kata sandi
Power BI Tidak. Pengguna Microsoft Entra,
Identitas Terkelola
Antrean Azure Service Bus Yes Kunci akses,
Identitas Terkelola
Topik Azure Service Bus Yes Kunci akses,
Identitas Terkelola
Azure SQL Database Ya, opsional. Autentikasi pengguna SQL,
Identitas Terkelola
Azure Table Storage Yes Kunci akun

Penting

Azure Stream Analytics menggunakan Insert atau Replace API berdasarkan desain. Operasi ini menggantikan entitas yang ada atau menyisipkan entitas baru jika tidak ada dalam tabel.

Partitioning

Azure Stream Analytics mendukung partisi untuk semua output kecuali untuk Power BI. Untuk informasi selengkapnya tentang kunci partisi dan jumlah penulis output, lihat artikel untuk jenis output tertentu yang Anda minati. Artikel untuk jenis output ditautkan di bagian sebelumnya.

Untuk penyetelan partisi yang lebih canggih, Anda dapat mengontrol jumlah penulis output dengan menggunakan INTO <partition count> klausa (lihat INTO) dalam kueri Anda. Kontrol ini dapat membantu Anda mencapai topologi pekerjaan yang diinginkan. Jika adaptor keluaran Anda tidak dipartisi, kurangnya data pada satu partisi input dapat menyebabkan penundaan hingga dampak waktu kedatangan terlambat. Dalam kasus seperti itu, output digabungkan ke satu penulis, yang dapat menyebabkan hambatan dalam alur Anda. Untuk mempelajari lebih lanjut tentang kebijakan kedatangan terlambat, lihat Pertimbangan urutan peristiwa Azure Stream Analytics.

Ukuran output batch

Semua output mendukung batching, tetapi hanya beberapa dukungan yang mengatur ukuran batch secara eksplisit. Azure Stream Analytics menggunakan batch ukuran variabel untuk memproses peristiwa dan menulis ke output. Biasanya, mesin Stream Analytics tidak menulis satu pesan pada satu waktu dan menggunakan batch untuk efisiensi. Saat tingkat peristiwa masuk dan keluar tinggi, Azure Stream Analytics menggunakan batch yang lebih besar. Ketika laju keluaran rendah, sistem menggunakan batch yang lebih kecil untuk menjaga latensi tetap rendah.

Perilaku pemisahan file Avro dan Parquet

Kueri Azure Stream Analytics dapat menghasilkan beberapa skema untuk output tertentu. Daftar kolom yang diproyeksikan, dan jenisnya, dapat berubah berdasarkan baris demi baris. Secara desain, format Avro dan Parquet tidak mendukung skema variabel dalam satu file.

Perilaku berikut mungkin terjadi saat mengarahkan aliran dengan skema variabel ke output menggunakan format ini:

  • Jika perubahan skema dapat dideteksi, file output saat ini ditutup, dan yang baru diinisialisasi pada skema baru. Memisahkan file seperti itu sangat memperlambat output ketika perubahan skema sering terjadi. Perilaku ini dapat sangat berdampak pada performa keseluruhan pekerjaan.
  • Jika perubahan skema tidak dapat dideteksi, baris kemungkinan besar ditolak, dan pekerjaan macet karena baris tidak dapat dihasilkan. Kolom berlapis, atau array multijenis, adalah situasi yang tidak ditemukan dan ditolak.

Pertimbangkan output yang menggunakan format Avro atau Parquet untuk bertipe kuat, atau menggunakan skema-on-write, dan tuliskan kueri yang menargetkannya dengan menggunakan konversi dan proyeksi eksplisit untuk skema seragam.

Jika Anda perlu membuat beberapa skema, pertimbangkan untuk membuat beberapa output dan memisahkan rekaman ke setiap tujuan dengan menggunakan WHERE klausa.

Properti jendela pemrosesan batch output Parquet

Saat Anda menggunakan penyebaran templat Azure Resource Manager atau REST API, Anda mengatur dua properti jendela batching:

  1. timeWindow

    Waktu tunggu maksimum per batch. Tetapkan nilai sebagai teks dari Timespan. Misalnya, gunakan 00:02:00 selama dua menit. Setelah waktu ini, batch ditulis ke output bahkan jika jumlah baris minimum tidak terpenuhi. Nilai default adalah satu menit dan maksimum yang diizinkan adalah dua jam. Jika output blob Anda memiliki frekuensi pola jalur, waktu tunggu tidak boleh lebih tinggi dari rentang waktu partisi.

  2. sizeWindow

    Jumlah minimal baris per batch. Untuk Parket, setiap batch membuat file baru. Nilai default saat ini adalah 2.000 baris dan maksimum yang diizinkan adalah 10.000 baris.

API versi 2017-04-01-preview atau yang lebih tinggi mendukung properti jendela batching ini. Berikut adalah contoh payload JSON untuk panggilan REST API:

"type": "stream",
      "serialization": {
        "type": "Parquet",
        "properties": {}
      },
      "timeWindow": "00:02:00",
      "sizeWindow": "2000",
      "datasource": {
        "type": "Microsoft.Storage/Blob",
        "properties": {
          "storageAccounts" : [
          {
            "accountName": "{accountName}",
            "accountKey": "{accountKey}",
          }
          ],

Langkah selanjutnya