Bagikan melalui


Partisi keluaran blob kustom Azure Stream Analytics

Azure Stream Analytics mendukung partisi output blob kustom dengan bidang atau atribut kustom dan pola jalur kustom DateTime .

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 pilihan kunci partisi

Kunci partisi, atau nama kolom, yang digunakan untuk mempartisi data input mungkin berisi karakter apa pun yang diterima untuk nama blob. Tidak dimungkinkan untuk menggunakan bidang berlapis sebagai kunci partisi kecuali digunakan bersama dengan alias. Namun, Anda dapat menggunakan karakter tertentu untuk membuat hierarki file. Misalnya, untuk membuat kolom yang menggabungkan data dari dua kolom lain untuk membuat kunci partisi unik, Anda bisa menggunakan kueri berikut:

SELECT name, id, CONCAT(name, "/", id) AS nameid

Kunci partisi harus NVARCHAR(MAX), , BIGINTFLOAT, atau BIT (tingkat kompatibilitas 1.2 atau 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 tugas mengambil data masukan dari sesi pengguna secara langsung yang terhubung ke layanan video game eksternal di mana data yang dimuat berisi kolom client_id untuk mengidentifikasi sesi. Untuk mempartisi data menurut client_id, atur bidang pola Jalur blob untuk memasukkan token partisi {client_id} dalam properti output blob saat Anda membuat pekerjaan. Data dengan berbagai nilai client_id mengalir melalui proses Azure Stream Analytics, dan data keluaran disimpan ke dalam folder terpisah berdasarkan nilai client_id tunggal per folder.

Cuplikan layar yang memperlihatkan 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 {sensor_id} akan digunakan untuk mempartisi setiap data sensor ke dalam folder yang berbeda.

Saat Anda menggunakan REST API, bagian output dari file JSON yang digunakan untuk permintaan tersebut mungkin terlihat seperti gambar berikut:

Cuplikan layar yang memperlihatkan output REST API.

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

Cuplikan layar yang memperlihatkan kontainer klien.

Setiap folder mungkin berisi beberapa blob di mana setiap blob berisi satu atau beberapa rekaman. Dalam contoh sebelumnya, ada satu blob dalam folder berlabel "06000000" konten berikut:

Cuplikan layar yang memperlihatkan konten blob.

Perhatikan bahwa setiap rekaman dalam blob memiliki kolom yang client_id 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 penataan jalur blob. Semua pola jalur berikut 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. Contohnya select concat (col1, col2) as compositeColumn into blobOutput from input. Kemudian mereka dapat menentukan compositeColumn sebagai jalur kustom di Azure Blob Storage.

  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 8.000, rekaman ditambahkan ke blob yang ada. Mereka hanya membuat blob baru jika diperlukan. Jika kardinalitas lebih dari 8.000, tidak ada jaminan blob yang ada akan ditulis. Blob baru tidak akan dibuat untuk sembarang jumlah data 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 kustom DateTime memungkinkan Anda menentukan format output yang selaras dengan konvensi Hive Streaming, memberi Azure Stream Analytics kemampuan untuk mengirim data ke Azure HDInsight dan Azure Databricks untuk pemrosesan hilir. Pola jalur kustom DateTime mudah diterapkan dengan menggunakan kata kunci datetime di bidang Path Prefix output blob Anda, bersama dengan penentu format. Contohnya {datetime:yyyy}.

Token yang didukung

Token penentu format berikut dapat digunakan sendiri atau dalam kombinasi untuk mencapai format kustom DateTime .

Spesifikator 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 kustom DateTime, Anda dapat menambahkan token {date} dan/atau {time} ke Awalan Jalur untuk menghasilkan dropdown dengan bawaan DateTime format.

Cuplikan layar yang memperlihatkan format DateTime lama Stream Analytics.

Ekstensibilitas dan pembatasan

Anda dapat menggunakan token sebanyak yang Anda suka{datetime:<specifier>} dalam pola jalur hingga mencapai batas karakter awalan jalur. Spesifikasi format tidak dapat dikombinasikan dalam satu token di luar kombinasi yang sudah tersedia dalam daftar tarik-turun 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 mungkin menggunakan penentu format yang sama beberapa kali dalam prefiks jalur. Token harus diulang setiap kali.

Konvensi Apache Hive Streaming

Pola jalur khusus untuk Blob Storage dapat digunakan dengan konvensi Hive Streaming, yang mengharapkan folder dilabeli dengan column= dalam nama folder.

Contohnya year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}.

Output kustom menghilangkan kerumitan mengubah tabel dan menambahkan partisi secara manual ke data port antara Stream Analytics dan Apache Hive. Sebagai gantinya, banyak folder dapat ditambahkan secara otomatis dengan menggunakan:

MSCK REPAIR TABLE while hive.exec.dynamic.partition true

Contoh

Buat akun penyimpanan, grup sumber daya, pekerjaan Stream Analytics, dan sumber input berdasarkan panduan mulai cepat pada portal Azure Stream Analytics. Gunakan data sampel yang sama yang digunakan dalam panduan cepat. Data sampel juga tersedia di GitHub.

Buat sink output blob dengan konfigurasi berikut:

Cuplikan layar yang memperlihatkan Azure Stream Analytics membuat sink output blob.

Pola jalur lengkapnya adalah:

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 hingga tingkat harian.

Cuplikan layar yang memperlihatkan output blob Azure Stream Analytics dengan pola jalur kustom.