Pemartisian output blob kustom Azure Stream Analytics
Azure Stream Analytics mendukung pemartisian output blob kustom dengan bidang atau atribut kustom dan pola jalur DateTime kustom.
Bidang isian atau atribut kustom
Bidang isian atau atribut isian kustom meningkatkan alur kerja pemrosesan dan pelaporan data downstream dengan memungkinkan kontrol lebih besar atas output.
Opsi kunci partisi
Kunci partisi, atau nama kolom, yang digunakan untuk mempartisi data input dapat berisi karakter apa pun yang diterima untuk nama blob. Tidak dimungkinkan untuk menggunakan bidang berlapis sebagai kunci partisi kecuali digunakan bersama dengan alias, tetapi Anda dapat menggunakan karakter tertentu untuk membuat hierarki file. Misalnya, Anda bisa menggunakan kueri berikut untuk membuat kolom yang menggabungkan data dari dua kolom lain guna membuat kunci partisi yang unik.
SELECT name, id, CONCAT(name, "/", id) AS nameid
Kunci partisi harus NVARCHAR(MAX), BIGINT, FLOAT, atau BIT (tingkat kompatibilitas 1.2 atau yang lebih tinggi). Jenis DateTime, Array, dan Records tidak didukung, tetapi dapat digunakan sebagai kunci partisi jika dikonversi ke String. Untuk informasi selengkapnya, lihat Jenis data Azure Stream Analytics.
Contoh
Misalkan pekerjaan mengambil data input dari sesi pengguna langsung yang tersambung ke layanan video game eksternal di mana data yang diserap berisi client_id untuk mengidentifikasi sesi. Untuk mempartisi data menurut client_id, atur bidang Pola Jalur Blob agar menyertakan token partisi {client_id} dalam properti output blob saat membuat pekerjaan. Karena data dengan berbagai nilai client_id mengalir melalui pekerjaan Azure Stream Analytics, data output disimpan ke folder terpisah berdasarkan satu nilai client_id per folder.
Demikian pula, jika input pekerjaan adalah data sensor dari jutaan sensor di mana setiap sensor memiliki sensor_id, Pola Jalur adalah {sensor_id} untuk mempartisi setiap data sensor ke folder yang berbeda.
Saat Anda menggunakan REST API, bagian output dari file JSON yang digunakan untuk permintaan tersebut mungkin terlihat seperti gambar berikut:
Setelah pekerjaan mulai berjalan, clients
kontainer mungkin terlihat seperti gambar berikut:
Setiap folder mungkin berisi beberapa blob di mana setiap blob berisi satu atau beberapa rekaman. Dalam contoh di atas, ada satu blob dalam folder berlabel "06000000" dengan konten berikut:
Perhatikan bahwa setiap rekaman dalam blob memiliki kolom client_id yang cocok dengan nama folder karena kolom yang digunakan untuk mempartisi output di jalur output adalah client_id.
Batasan
Hanya satu kunci partisi kustom yang diizinkan dalam properti output blob Pola Jalur. Semua Pola Jalur berikut ini valid:
- cluster1/{date}/{aFieldInMyData}
- cluster1/{time}/{aFieldInMyData}
- cluster1/{aFieldInMyData}
- cluster1/{date}/{time}/{aFieldInMyData}
Jika pelanggan ingin menggunakan lebih dari satu bidang input, mereka dapat membuat kunci komposit dalam kueri untuk partisi jalur kustom dalam output blob dengan menggunakan CONCAT. Misalnya: pilih concat (col1, col2) sebagai compositeColumn ke blobOutput dari input. Kemudian mereka dapat menentukan compositeColumn sebagai jalur khusus dalam penyimpanan blob.
Kunci partisi tidak peka huruf besar/kecil, sehingga kunci partisi seperti
John
danjohn
setara. Selain itu, ekspresi tidak dapat digunakan sebagai kunci partisi. Misalnya, {columnA + columnB} tidak berfungsi.Ketika aliran input terdiri dari rekaman dengan kardinalitas kunci partisi di bawah 8000, rekaman ditambahkan ke blob yang ada, dan hanya membuat blob baru bila perlu. Jika kardinalitas lebih dari 8000, tidak ada jaminan blob yang ada akan ditulis, dan blob baru tidak akan dibuat untuk jumlah rekaman arbitrer dengan kunci partisi yang sama.
Jika output blob dikonfigurasi sebagai tidak dapat diubah, Azure Stream Analytics membuat blob baru setiap kali data dikirim.
Pola jalur DateTime kustom
Pola jalur DateTime kustom memungkinkan Anda menentukan format output yang selaras dengan konvensi Apache Hive Streaming, memberi Azure Stream Analytics kemampuan untuk mengirim data ke Azure HDInsight dan Azure Databricks untuk pemrosesan downstream. Pola jalur DateTime kustom mudah diimplementasikan menggunakan kata kunci datetime
di bidang Awalan Jalur output blob Anda, bersama penentu format. Contohnya:{datetime:yyyy}
Token yang didukung
Token penentu format berikut dapat digunakan sendiri atau dikombinasikan untuk mencapai format DateTime kustom:
Penentu format | Deskripsi | Hasil pada waktu contoh 2018-01-02T10:06:08 |
---|---|---|
{datetime:yyyy} | Tahun sebagai angka empat digit | 2018 |
{datetime:MM} | Bulan dari 01 hingga 12 | 01 |
{datetime:M} | Bulan dari 1 hingga 12 | 1 |
{datetime:dd} | Hari dari 01 hingga 31 | 02 |
{datetime:d} | Hari dari 1 hingga 31 | 2 |
{datetime:HH} | Jam menggunakan format 24 jam, dari 00 hingga 23 | 10 |
{datetime:mm} | Menit dari 00 hingga 60 | 06 |
{datetime:m} | Menit dari 0 hingga 60 | 6 |
{datetime:ss} | Detik dari 00 hingga 60 | 08 |
Jika Anda tidak ingin menggunakan pola DateTime kustom, Anda dapat menambahkan token {date} dan/atau {time} ke Awalan Jalur untuk menghasilkan dropdown dengan format DateTime bawaan.
Ekstensibilitas dan pembatasan
Anda dapat menggunakan token, {datetime:<specifier>}
, sebanyak mungkin, dalam pola jalur hingga Anda mencapai batas karakter Awalan Jalur. Penentu format tidak dapat dikombinasikan dalam satu token di luar kombinasi yang sudah dicantumkan oleh drop-down tanggal dan waktu.
Untuk partisi jalur logs/MM/dd
:
Ekspresi yang valid | Ekspresi yang tidak valid |
---|---|
logs/{datetime:MM}/{datetime:dd} |
logs/{datetime:MM/dd} |
Anda dapat menggunakan penentu format yang sama beberapa kali dalam Awalan Jalur. Token harus diulang setiap kali.
Konvensi Apache Hive Streaming
Pola jalur kustom untuk penyimpanan blob dapat digunakan dengan konvensi Apache Hive Streaming, yang mengharapkan folder diberi label dengan column=
dalam nama folder.
Contohnya:year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}
Output kustom menghilangkan repotnya pengubahan tabel dan penambahan partisi secara manual ke data port antara Azure Stream Analytics dan Apache Hive. Sebaliknya, banyak folder dapat ditambahkan secara otomatis menggunakan:
MSCK REPAIR TABLE while hive.exec.dynamic.partition true
Contoh
Buat akun penyimpanan, grup sumber daya, pekerjaan Azure Stream Analytics, dan sumber input sesuai dengan panduan mulai cepat portal Azure tentang Azure Stream Analytics. Gunakan contoh data yang sama yang digunakan dalam panduan mulai cepat, yang juga tersedia di GitHub.
Buat sink output blob dengan konfigurasi berikut:
Pola jalur lengkap adalah sebagai berikut:
year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}
Ketika Anda memulai pekerjaan, struktur folder berdasarkan pola jalur dibuat dalam kontainer blob Anda. Anda dapat menelusuri paling detail ke tingkat hari.