Penyimpanan blob dan output Azure Data Lake Gen2 dari Azure Stream Analytics

Data Lake Storage Gen2 menjadikan Azure Storage sebagai fondasi untuk membangun data lake perusahaan di Azure. Dirancang sejak awal untuk melayani beberapa petabyte informasi sambil mempertahankan ratusan gigabit throughput, Data Lake Storage Gen2 memungkinkan Anda mengelola sejumlah besar data dengan mudah. Bagian mendasar dari Data Lake Storage Gen2 adalah penambahan hierarki kumpulan nama ke penyimpanan Blob.

Penyimpanan Azure Blob menawarkan solusi hemat biaya dan dapat diskalakan untuk menyimpan sejumlah besar data yang tidak terstruktur di cloud. Untuk pengenalan penyimpanan Blob dan penggunaannya, lihat Mengunggah, mengunduh, dan mencantumkan blob dengan portal Microsoft Azure.

Catatan

Untuk detail tentang perilaku khusus untuk format AVRO dan Parket, lihat bagian terkait di ringkasan.

Konfigurasi output

Tabel berikut mencantumkan nama properti dan deskripsinya untuk membuat blob atau output Azure Data Lake Storage Gen2.

Nama properti Deskripsi
Alias output Nama yang mudah diingat yang digunakan dalam kueri untuk mengarahkan output kueri ke penyimpanan blob ini.
Akun Penyimpanan Nama akun penyimpanan tempat Anda mengirim output.
Kunci akun penyimpanan Kunci rahasia yang terkait dengan akun penyimpanan.
Kontainer Pengelompokan logis untuk blob yang disimpan di layanan Azure Blob. Ketika Anda mengunggah blob ke Blob service, Anda harus menentukan wadah untuk blob itu.

Nama kontainer dinamis bersifat opsional. Ini mendukung satu dan hanya satu dinamis {field} dalam nama kontainer. Bidang harus ada dalam data output, dan mengikuti kebijakan nama kontainer.

Jenis data bidang harus string. Untuk menggunakan beberapa bidang dinamis, atau menggabungkan teks statis bersama dengan bidang dinamis, Anda dapat menentukannya dalam kueri dengan fungsi string bawaan, seperti CONCAT, LTRIM, dll.
Format serialisasi peristiwa Format serialisasi untuk data output. JSON, CSV, Avro, dan Parquet didukung. Delta Lake terdaftar sebagai opsi di sini. Data dalam format Parquet jika Delta Lake dipilih. Pelajari selengkapnya tentang Delta Lake
Nama jalur Delta Diperlukan saat Format serialisasi peristiwa adalah Delta Lake. Jalur yang digunakan untuk menulis tabel delta lake dalam kontainer yang ditentukan. Ini termasuk nama tabel. Detail dan contoh selengkapnya.
Mode Tulis Mode tulis mengontrol cara Azure Stream Analytics menulis ke file output. Tepat sekali pengiriman hanya terjadi ketika mode tulis adalah Sekali. Informasi selengkapnya di bagian berikutnya.
Kolom Partisi Opsional. Nama {field} dari data output Anda ke partisi. Hanya satu kolom partisi yang didukung.
Pola Jalur Diperlukan saat Format serialisasi peristiwa adalah Delta lake. Pola jalur file yang digunakan untuk menulis blob Anda dalam wadah yang ditentukan.

Dalam pola jalur, Anda dapat memilih untuk menggunakan satu atau beberapa instans variabel tanggal dan waktu untuk menentukan frekuensi blob ditulis: {date}, {time}.

Jika mode tulis Anda adalah Sekali, Anda perlu menggunakan {date} dan {time}.

Anda dapat menggunakan partisi blob kustom untuk menentukan satu nama {bidang} kustom dari data peristiwa Anda ke blob partisi. Nama bidang adalah alfanumerik dan dapat mencakup spasi, tanda hubung, dan garis bawah. Pembatasan bidang kustom mencakup yang berikut ini:
  • Tidak ada nama {field} kustom dinamis yang diizinkan jika mode tulis Anda adalah Sekali.
  • Nama bidang tidak peka huruf besar-kecil. Misalnya, layanan tidak dapat membedakan antara kolom ID dan kolom id."
  • Bidang berlapis tidak diizinkan. Sebagai gantinya, gunakan alias dalam kueri pekerjaan untuk "meratakan" bidang.
  • Ekspresi tidak bisa digunakan sebagai nama bidang.

Fitur ini memungkinkan penggunaan konfigurasi penentu format tanggal/waktu kustom di jalur tersebut. Format tanggal dan waktu khusus harus ditentukan satu per satu, diapit oleh kata kunci {datetime:<specifier>}. Input yang diperbolehkan untuk <specifier> adalah yyyy, MM, M, dd, d, HH, H, mm, m, ss, atau s. Kata kunci {datetime:<specifier>} dapat digunakan beberapa kali di jalur untuk membentuk konfigurasi tanggal/waktu kustom.

Contoh:
  • Contoh 1: cluster1/logs/{date}/{time}
  • Contoh 2: cluster1/logs/{date}/{time}
  • Contoh 3: cluster1/{client_id}/{date}/{time}
  • Contoh 4: cluster1/{datetime:ss}/{myField} di mana kueri adalah: SELECT data.myField AS myField FROM Input;
  • Contoh 5: cluster1/year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}

Stempel waktu struktur folder yang dibuat mengikuti UTC dan bukan waktu lokal. System.Timestamp adalah waktu yang digunakan untuk semua partisi berbasis waktu.

Penamaan file menggunakan konvensi berikut:

{Path Prefix Pattern}/schemaHashcode_Guid_Number.extension

Di sini Guid mewakili pengidentifikasi unik yang ditugaskan ke penulis internal yang dibuat untuk menulis ke file blob. Angka mewakili indeks blok blob.

Contoh file output:
  • Myoutput/20170901/00/45434_gguid_1.csv
  • Myoutput/20170901/01/45434_gguid_1.csv

Untuk informasi selengkapnya tentang fitur ini, lihatPartisi output blob kustom Azure Stream Analytics.
Format tanggal Diperlukan saat Format serialisasi peristiwa adalah Delta lake. Jika token tanggal digunakan di jalur awalan, Anda dapat memilih format tanggal di mana file Anda diatur. Contoh: YYYY/MM/DD
Format waktu Diperlukan saat Format serialisasi peristiwa adalah Delta lake. Jika token waktu digunakan di jalur awalan, tentukan format waktu di mana file Anda diatur.
Baris minimum Jumlah baris minimum per batch. Untuk Parket, setiap batch membuat file baru. Nilai default saat ini adalah 2.000 baris dan maksimum yang diperbolehkan adalah 10.000 baris.
Waktu maksimum Waktu tunggu maksimum per batch. Setelah waktu ini, batch akan ditulis ke output bahkan jika persyaratan baris minimum tidak terpenuhi. Nilai default saat ini adalah 1 menit dan maksimum yang diperbolehkan adalah 2 jam. Jika output blob Anda memiliki frekuensi pola jalur, waktu tunggu tidak boleh lebih tinggi dari rentang waktu partisi.
Pengodean Jika Anda menggunakan format CSV atau JSON, pengodean harus ditentukan. UTF-8 adalah satu-satunya format pengodean yang didukung saat ini.
Pemisah Hanya berlaku untuk serialisasi CSV. Stream Analytics mendukung banyak pemisah umum untuk menserialisasikan data CSV. Nilai yang didukung adalah koma, titik koma, spasi, tab, dan bilah vertikal.
Format Hanya berlaku untuk serialisasi JSON. Dipisahkan baris menetapkan bahwa output diformat dengan membuat setiap objek JSON dipisahkan oleh baris baru. Jika Anda memilih Dipisahkan baris, JSON dibaca satu objek dalam satu waktu. Seluruh konten dengan sendirinya tidak akan menjadi JSON yang valid. Array menetapkan bahwa output diformat sebagai larik objek JSON. Array ini ditutup hanya ketika pekerjaan berhenti atau Azure Stream Analytics telah dipindahkan ke jendela waktu berikutnya. Secara umum, lebih baik menggunakan JSON yang dipisahkan garis, karena tidak memerlukan penanganan khusus saat file output masih ditulis.

Pengiriman Tepat Sekali (Pratinjau Umum)

Pengiriman end-to-end persis sekali saat membaca input streaming berarti bahwa data yang diproses akan ditulis ke output Azure Data Lake Storage Gen2 sekali tanpa duplikat. Saat fitur diaktifkan, pekerjaan Azure Stream Analytics Anda tidak menjamin kehilangan data dan tidak ada duplikat yang dihasilkan sebagai output, di seluruh mulai ulang yang dimulai pengguna dari waktu output terakhir. Ini sangat menyederhanakan alur streaming Anda dengan tidak harus menerapkan dan memecahkan masalah logika deduplikasi.

Mode Tulis

Ada dua cara agar Azure Stream Analytics menulis ke penyimpanan Blob atau akun ADLS Gen2 Anda. Salah satunya adalah menambahkan hasil baik ke file yang sama atau ke urutan file saat hasil masuk. Yang lain adalah menulis setelah semua hasil untuk partisi waktu ketika semua data untuk partisi waktu tersedia. Tepat Setelah Pengiriman diaktifkan saat Mode Tulis adalah Sekali.

Tidak ada opsi mode tulis untuk Delta Lake. Namun output delta lake juga memberikan jaminan sekali persis menggunakan log delta. Ini tidak memerlukan partisi waktu dan akan menulis hasil terus-menerus berdasarkan parameter batching yang ditentukan pengguna.

Catatan

Jika Anda lebih suka tidak menggunakan fitur pratinjau untuk pengiriman tepat sekali, pilih Tambahkan saat hasil tiba.

Konfigurasi

Untuk menerima pengiriman tepat sekali untuk penyimpanan Blob atau akun ADLS Gen2, Anda perlu mengonfigurasi pengaturan berikut:

  • Pilih Sekali setelah semua hasil partisi waktu tersedia untuk Mode Tulis Anda.
  • Berikan Pola Jalur dengan {date} dan {time} ditentukan.
  • Tentukan format tanggal dan format waktu.

Batasan

  • Sub-aliran tidak didukung.
  • Pola Jalur menjadi properti yang diperlukan, dan harus berisi {date} dan {time}. Tidak ada nama {field} kustom dinamis yang diizinkan. Pelajari selengkapnya tentang pola jalur kustom.
  • Jika pekerjaan dimulai pada waktu kustom sebelum atau sesudah waktu output terakhir, ada risiko file ditimpa. Misalnya, ketika format waktu adalah HH, file dihasilkan setiap jam. Jika Anda menghentikan pekerjaan pada pukul 08.15, dan memulai ulang pekerjaan pada pukul 08.30, file yang dihasilkan antara pukul 08.00 hingga 09.00 hanya mencakup data dari pukul 08.30 hingga 09.00. Data dari pukul 08.00 hingga 08.15 akan hilang saat ditimpa.

File output blob

Saat Anda menggunakan penyimpanan Blob sebagai output, file baru dibuat di blob dalam kasus berikut:

  • File melebihi jumlah maksimum blok yang diizinkan (saat ini 50.000). Anda mungkin mencapai jumlah blok maksimum yang diizinkan tanpa mencapai ukuran blob maksimum yang diizinkan. Misalnya, jika tingkat output tinggi, Anda dapat melihat lebih banyak byte per blok, dan ukuran file lebih besar. Jika tingkat output rendah, setiap blok memiliki lebih sedikit data, dan ukuran file lebih kecil.
  • Ada perubahan skema dalam output, dan format output memerlukan skema tetap (CSV, Avro, Parquet).
  • Pekerjaan dimulai ulang, baik secara eksternal oleh pengguna yang menghentikannya dan memulainya, atau secara internal untuk pemeliharaan sistem atau pemulihan kesalahan.
  • Kueri sepenuhnya dipartisi, dan file baru dibuat untuk setiap partisi output. Ini berasal dari menggunakan PARTITION BY, atau paralelisasi asli yang diperkenalkan dalam tingkat kompatibilitas 1.2
  • Pengguna menghapus file atau kontainer akun penyimpanan.
  • Output dipartisi waktu dengan menggunakan pola awalan jalur, dan blob baru digunakan saat kueri berpindah ke jam berikutnya.
  • Output dipartisi oleh bidang kustom, dan blob baru dibuat per kunci partisi jika tidak ada.
  • Output dipartisi oleh bidang kustom di mana kardinalitas kunci partisi melebihi 8.000, dan blob baru dibuat per kunci partisi.

Partisi

Untuk kunci partisi, gunakan token {date} dan {time} dari bidang peristiwa Anda di pola jalur. Pilih format tanggal, seperti YYYY/MM/DD, DD/MM/YYYY, atau MM-DD-YYYY. HH digunakan untuk format waktu. Output blob dapat dipartisi dengan satu atribut peristiwa kustom {fieldname} atau {datetime:<specifier>}. Jumlah penulis output mengikuti partisi masukan untuk kueri yang dapat diparalelkan sepenuhnya.

Ukuran batch output

Untuk ukuran pesan maksimum, lihat Batas Azure Storage. Ukuran blok blob maksimum adalah 4 MB dan jumlah blob blok maksimum adalah 50.000.

Batasan

  • Jika simbol / garis miring digunakan dalam pola jalur (misalnya /folder2/folder3), maka folder kosong dibuat dan tidak terlihat di Storage Explorer
  • Azure Stream Analytics ditambahkan ke file yang sama jika file blob baru tidak diperlukan. Ini dapat menyebabkan lebih banyak pemicu dihasilkan jika layanan Azure seperti Event Grid dikonfigurasi untuk dipicu pada pembaruan file blob.
  • Azure Stream Analytics menambahkan ke blob secara default. Ketika format output adalah array Json, itu menyelesaikan file pada matikan atau ketika keluaran pindah ke partisi waktu berikutnya untuk waktu keluaran dipartisi. Dalam beberapa kasus seperti restart yang tidak bersih, ada kemungkinan bahwa penutupan "]" untuk array json hilang.

Langkah berikutnya