Azure Stream Analytics özel blob çıkışı bölümleme
Azure Stream Analytics, özel alanlar veya öznitelikler ve özel yol desenleri ile özel DateTime
blob çıkış bölümlemlerini destekler.
Ö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ıkları 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 için 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ı , , BIGINT
FLOAT
veya BIT
(1.2 uyumluluk düzeyi veya üzeri) olmalıdırNVARCHAR(MAX)
. DateTime
, Array
ve Records
türleri desteklenmez, ancak dizelere dönüştürülürlerse bölüm anahtarları olarak kullanılabilirler. 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
ile bölümlendirmek için, bir iş oluşturduğunuzda blob Yolu desen alanını blob çıktı özelliklerine bölüm belirteci {client_id}
içerecek şekilde ayarlayın. Çeşitli client_id
değerlere sahip veriler Stream Analytics işi üzerinden aktıkça, çıkış verileri klasör başına tek client_id
bir değer temelinde ayrı klasörlere kaydedilir.
Benzer şekilde, iş girişi her algılayıcının sahip sensor_id
olduğu milyonlarca algılayıcının sensör verileriyse, yol deseni her algılayıcı verilerini farklı klasörlere bölmek olacaktır {sensor_id}
.
REST API'yi kullandığınızda, bu istek için kullanılan bir JSON dosyasının çıkış bölümü aşağıdaki görüntü gibi görünebilir:
İş çalışmaya başladıktan sonra kapsayıcı clients
aşağıdaki görüntü gibi görünebilir:
Her klasör, her blob'un bir veya daha fazla kayıt içerdiği birden çok blob içerebilir. Yukarıdaki örnekte, aşağıdaki içeriklerle etiketlenmiş "06000000"
bir klasörde tek bir blob vardır:
Çıktı yolunda çıkışı bölümlemede kullanılan sütun olduğundan, blobdaki her kaydın klasör adıyla eşleşen bir client_id
sütunu olduğuna client_id
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, kullanarak
CONCAT
blob çıktısında özel yol bölümü için sorguda bileşik anahtar oluşturabilirler.select concat (col1, col2) as compositeColumn into blobOutput from input
bunun bir örneğidir. Daha sonra Azure Blob Depolama'da özel yol olarak belirtebilirlercompositeColumn
.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ışmaz.Giriş akışı, bölüm anahtarı kardinalitesi 8.000'in altında olan kayıtlardan oluştuğunda, kayıtlar mevcut bloblara eklenir. Yalnızca gerektiğinde yeni bloblar oluştururlar. Kardinalite 8.000'in üzerindeyse mevcut blobların yazılacağı garanti edilememektedir. Aynı bölüm anahtarına sahip rastgele sayıda kayıt için yeni bloblar oluşturulmaz.
Blob çıkışı 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 Stream kurallarıyla uyumlu bir çıkış biçimi belirtmenize olanak tanıyarak 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. {datetime:yyyy}
bunun bir örneğidir.
Desteklenen belirteçler
Aşağıdaki biçim belirtici belirteçleri, özel DateTime
biçimler 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ı 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
desenler kullanmak istemiyorsanız, ve/veya {time}
belirtecini {date}
Yol Ön Eki alanına ekleyerek yerleşik DateTime
biçimlere sahip bir açılan liste oluşturabilirsiniz.
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 ekinde aynı biçim belirticiyi birden çok kez kullanabilirsiniz. Belirteç her seferinde yinelenmelidir.
Hive Streaming kuralları
Blob Depolama için özel yol desenleri, klasörlerin klasör adında etiketlenmesi beklenen Hive Streaming kuralıyla column=
kullanılabilir.
year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}
bunun bir örneğidir.
Özel çıkış, tabloları değiştirme ve 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
Stream Analytics Azure portalı hızlı başlangıcına göre depolama hesabı, kaynak grubu, Stream Analytics işi ve giriş kaynağı oluşturun. Hızlı başlangıçta kullanılan örnek verileri kullanın. Örnek veriler GitHub'da da kullanılabilir.
Aşağıdaki yapılandırmayla bir blob çıkış havuzu oluşturun:
Tam yol deseni şöyledir:
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.