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.

Pola jalur dengan id klien

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:

Output REST API

Setelah pekerjaan mulai berjalan, clients kontainer mungkin terlihat seperti gambar berikut:

Kontainer klien

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:

Konten blob

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

  1. 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}
  2. 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.

  3. Kunci partisi tidak peka huruf besar/kecil, sehingga kunci partisi seperti John dan john setara. Selain itu, ekspresi tidak dapat digunakan sebagai kunci partisi. Misalnya, {columnA + columnB} tidak berfungsi.

  4. 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.

  5. 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.

Format DateTime lama Azure Stream Analytics

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:

Azure Stream Analytics membuat sink output blob

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.

Output blob Azure Stream Analytics dengan pola jalur kustom

Langkah berikutnya