Azure Stream Analytics özel blob çıkış bölümleme
Azure Stream Analytics, özel alanlar veya öznitelikler ve özel DateTime yol desenleriyle özel blob çıktısı bölümleme desteği sağlar.
Özel alan veya öznitelikler
Özel alan veya giriş öznitelikleri çıkış üzerinde daha fazla denetim sağlayarak aşağı akış veri işleme ve raporlama iş akışlarını geliştirir.
Bölüm anahtarı seçenekleri
Giriş verilerini bölümlendirmek için kullanılan bölüm anahtarı veya sütun adı, blob adları için kabul edilen herhangi bir karakter içerebilir. Diğer adlarla birlikte kullanılmadığı sürece iç içe alanları bölüm anahtarı olarak kullanmak mümkün değildir, ancak dosya hiyerarşisi oluşturmak için belirli karakterleri kullanabilirsiniz. Örneğin, benzersiz bir bölüm anahtarı oluşturmak üzere diğer iki sütundaki verileri birleştiren bir sütun oluşturmak için aşağıdaki sorguyu kullanabilirsiniz.
SELECT name, id, CONCAT(name, "/", id) AS nameid
Bölüm anahtarı NVARCHAR(MAX), BIGINT, FLOAT veya BIT (1.2 uyumluluk düzeyi veya üzeri) olmalıdır. DateTime, Array ve Records türleri desteklenmez, ancak Dizelere dönüştürülürlerse bölüm anahtarları olarak kullanılabilir. Daha fazla bilgi için bkz. Azure Stream Analytics Veri türleri.
Örnek
Bir işin, alınan verilerin oturumları tanımlamak için bir sütun client_id içerdiği bir dış video oyunu hizmetine bağlı canlı kullanıcı oturumlarından giriş verilerini aldığını varsayalım. Verileri client_id bölümlendirmek için, iş oluştururken Blob Yolu Deseni alanını blob çıktı özelliklerine {client_id} bölüm belirteci içerecek şekilde ayarlayın. Çeşitli client_id değerlerine sahip veriler Stream Analytics işi üzerinden aktıkça, çıkış verileri klasör başına tek bir client_id değeri temel alınarak ayrı klasörlere kaydedilir.
Benzer şekilde, iş girişi her algılayıcının bir sensor_id sahip olduğu milyonlarca algılayıcının sensör verileriyse, her algılayıcı verilerini farklı klasörlere bölümlendirmek için Yol Düzeni {sensor_id} olur.
REST API'yi kullandığınızda, bu istek için kullanılan JSON dosyasının çıkış bölümü aşağıdaki görüntüye benzer olabilir:
İş çalışmaya başladıktan sonra kapsayıcı clients
aşağıdaki görüntü gibi görünebilir:
Her klasör, her blobda bir veya daha fazla kayıt bulunan birden çok blob içerebilir. Yukarıdaki örnekte, "06000000" etiketli bir klasörde aşağıdaki içeriklere sahip tek bir blob vardır:
Çıkış yolundaki çıkışı bölümlendirmek için kullanılan sütun client_id olduğundan blobdaki her kaydın klasör adıyla eşleşen bir client_id sütunu olduğuna dikkat edin.
Sınırlamalar
Yol Deseni blob çıktı özelliğinde yalnızca bir özel bölüm anahtarına izin verilir. Aşağıdaki Yol Desenlerinin tümü geçerlidir:
- cluster1/{date}/{aFieldInMyData}
- cluster1/{time}/{aFieldInMyData}
- cluster1/{aFieldInMyData}
- cluster1/{date}/{time}/{aFieldInMyData}
Müşteriler birden fazla giriş alanı kullanmak isterse ARALIKBİRLEŞTİr'i kullanarak blob çıktısında özel yol bölümü için sorguda bileşik anahtar oluşturabilirler. Örneğin: girişten blobOutput'a compositeColumn olarak concat (col1, col2) öğesini seçin. Daha sonra blob depolamada özel yol olarak compositeColumn belirtebilirler.
Bölüm anahtarları büyük/küçük harfe duyarsız olduğundan ve
john
gibiJohn
bölüm anahtarları eşdeğerdir. Ayrıca, ifadeler bölüm anahtarları olarak kullanılamaz. Örneğin, {columnA + columnB} çalışmıyor.Giriş akışı 8000'in altında bölüm anahtarı kardinalitesine sahip kayıtlardan oluştuğunda, kayıtlar mevcut bloblara eklenir ve yalnızca gerektiğinde yeni bloblar oluşturur. Kardinalite 8000'in üzerindeyse mevcut blobların yazılacağı garanti edilemez ve aynı bölüm anahtarına sahip rastgele sayıda kayıt için yeni bloblar oluşturulmaz.
Blob çıktısı sabit olarak yapılandırılırsa, Stream Analytics her veri gönderildiğinde yeni bir blob oluşturur.
Özel DateTime yol desenleri
Özel DateTime yol desenleri Hive Akış kurallarıyla uyumlu bir çıkış biçimi belirtmenize olanak tanıyarak Azure Stream Analytics'e aşağı akış işleme için Azure HDInsight ve Azure Databricks'e veri gönderme olanağı sağlar. Özel DateTime yol desenleri, blob çıkışınızın Yol Ön Eki alanındaki anahtar sözcüğü ve biçim belirticisi kullanılarak datetime
kolayca uygulanır. Örneğin, {datetime:yyyy}
.
Desteklenen belirteçler
Aşağıdaki biçim belirtici belirteçleri, özel DateTime biçimleri elde etmek için tek başına veya birlikte kullanılabilir:
Biçim belirteci | Açıklama | Örnek saat 2018-01-02T10:06:08 üzerindeki sonuçlar |
---|---|---|
{datetime:yyyy} | Dört basamaklı bir sayı olarak yıl | 2018 |
{datetime:MM} | 01 ile 12 ay | 01 |
{datetime:M} | 1 ile 12 ay | 1 |
{datetime:dd} | 01 ile 31 gün | 02 |
{datetime:d} | 1 ile 31 gün | 2 |
{datetime:HH} | 00 ile 23 arasında 24 saatlik biçimin kullanıldığı saat | 10 |
{datetime:mm} | 00 ile 60 dakika | 06 |
{datetime:m} | 0 ile 60 dakika | 6 |
{datetime:ss} | 00 ile 60 saniye | 08 |
Özel DateTime desenlerini kullanmak istemiyorsanız, yerleşik DateTime biçimlerine sahip bir açılan liste oluşturmak için Yol Ön Ekine {date} ve/veya {time} belirtecini ekleyebilirsiniz.
Genişletilebilirlik ve kısıtlamalar
Yol Ön Eki karakter sınırına ulaşana kadar yol deseninde istediğiniz kadar belirteç {datetime:<specifier>}
kullanabilirsiniz. Biçim tanımlayıcıları, tarih ve saat açılan listelerinde zaten listelenen birleşimlerin ötesinde tek bir belirteç içinde birleştirilemiyor.
yol bölümü için logs/MM/dd
:
Geçerli ifade | Geçersiz ifade |
---|---|
logs/{datetime:MM}/{datetime:dd} |
logs/{datetime:MM/dd} |
Yol Ön Eki'nde aynı biçim belirticiyi birden çok kez kullanabilirsiniz. Belirteç her seferinde yinelenmelidir.
Hive Akış kuralları
Blob depolama için özel yol desenleri, klasörlerin klasör adında etiketlenmesi beklenen Hive Akış kuralıyla column=
birlikte kullanılabilir.
Örneğin, year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}
.
Özel çıkış, tabloları değiştirme ve Azure Stream Analytics ile Hive arasında bağlantı noktası verilerine el ile bölüm ekleme zahmetini ortadan kaldırır. Bunun yerine, aşağıdakiler kullanılarak birçok klasör otomatik olarak eklenebilir:
MSCK REPAIR TABLE while hive.exec.dynamic.partition true
Örnek
Azure Stream Analytics Azure portal hızlı başlangıç kılavuzuna göre depolama hesabı, kaynak grubu, Stream Analytics işi ve giriş kaynağı oluşturun. GitHub'da da bulunan hızlı başlangıç kılavuzunda kullanılan örnek verileri kullanın.
Aşağıdaki yapılandırmayla bir blob çıkış havuzu oluşturun:
Tam yol deseni aşağıdaki gibidir:
year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}
İşi başlattığınızda, blob kapsayıcınızda yol desenini temel alan bir klasör yapısı oluşturulur. Gün düzeyinde detaya gidebilirsiniz.