Öğretici: veri ambarına büyük veri akışı
Azure Event Grid , uygulama ve hizmetlerden gelen bildirimlere veya olaylara tepki sağlamanıza olanak tanıyan akıllı bir olay yönlendirme hizmetidir. Örneğin, bir Azure Işlevini bir blob depolamaya veya Data Lake Storage yakalanan Event Hubs verileri işleyecek şekilde tetikleyebilirler. Bu örnek , yakalanan Event Hubs verilerini blob depolamadan Azure SYNAPSE Analytics 'e (özel olarak ayrılmış bir SQL havuzuna) geçirmek için Event Grid ve Azure işlevlerinin nasıl kullanılacağını gösterir.
Bu diyagram, bu öğreticide derlemek için çözüm iş akışını gösterir:
- Azure olay hub' a gönderilen veriler bir Azure blob depolama alanında yakalanır.
- Veri yakalama işlemi tamamlandığında bir olay oluşturulur ve bir Azure olay kılavuzuna gönderilir.
- Event Grid bu olay verilerini bir Azure işlev uygulamasına iletir.
- İşlev uygulaması, depolamadan blobu almak için olay verilerinden blob URL'sini kullanır.
- İşlev uygulaması blob verilerini bir Azure Synapse Analytics.
Bu makalede aşağıdaki adımları uygulayın:
- Öğretici için gerekli altyapıyı dağıtma
- Kodu bir İşlevler uygulamasında yayımlama
- Event Grid aboneliği oluşturma
- Örnek verilerin akışla akışını Event Hubs
- Yakalanan verileri Azure Synapse Analytics
Önkoşullar
Bu öğreticiyi tamamlamak için aşağıdakiler gereklidir:
- Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- .NET masaüstü geliştirme, Azure geliştirme, ASP.NET ve web geliştirme, Node.js geliştirme ve Python geliştirme iş yükleri içeren Visual Studio 2019.
- EventHubsCaptureEventGridDemo örnek projesini bilgisayarınıza indirin.
- WindTurbineDataGenerator : Yakalama özellikli bir olay hub'sına örnek rüzgar türbini verileri gönderen basit bir yayımcı
- FunctionDWDumper - Azure Depolama blobunda bir Avro dosyası yakalandığında Event Grid bildirimi alan Azure İşlevi. Blob'un URI yolunu alır, içeriğini okur ve bu verileri Azure Synapse Analytics (ayrılmış SQL havuzu) klasörüne iletir.
Altyapıyı dağıtma
Bu adımda, gerekli altyapıyı bir Resource Manager dağıtırsınız. Şablonu dağıtarak aşağıdaki kaynaklar oluşturulur:
- Yakalama özelliğinin etkin olduğu olay hub'ı.
- Yakalanan dosyalar için depolama hesabı.
- İşlev uygulamasını barındırmak için App Service planı
- Olayı işlemek için işlev uygulaması
- Veri ambarını barındırmak için SQL Server
- Azure Synapse Analytics verileri depolamak için ayrılmış SQL havuzu (ayrılmış SQL havuzu)
Altyapıyı dağıtmak için Azure CLI kullanma
Azure portalında oturum açın.
Üst Cloud Shell Düğmeyi seçin.
Tarayıcının Cloud Shell açık olduğunu görüyorsunuz.
Komut Cloud Shell Bash ve PowerShell arasında seçim yapmak için bir seçenek görüyorsanız Bash'i seçin.
depolama alanını ilk kez Cloud Shell depolama hesabı oluşturmak için Depolama oluştur'ı seçin. Azure Cloud Shell dosyaları depolamak için bir Azure depolama hesabı gerekir.
Veri Cloud Shell bekleyin.
Aşağıdaki CLI komutunu çalıştırarak bir Azure kaynak grubu oluşturun:
Aşağıdaki komutu kopyalayıp Cloud Shell yapıştırın. 5. kaynak grubu adını ve konumunu değiştirebilirsiniz.
az group create -l eastus -n rgDataMigrationENTER tuşuna basın.
Aşağıda bir örnek verilmiştir:
user@Azure:~$ az group create -l eastus -n rgDataMigration { "id": "/subscriptions/00000000-0000-0000-0000-0000000000000/resourceGroups/rgDataMigration", "location": "eastus", "managedBy": null, "name": "rgDataMigration", "properties": { "provisioningState": "Succeeded" }, "tags": null }
Aşağıdaki CLI komutunu çalıştırarak önceki bölümde (olay hub'ı, depolama hesabı, işlev uygulaması, Azure Synapse Analytics) belirtilen tüm kaynakları dağıtın:
Komutu kopyalayıp Cloud Shell yapıştırın. Alternatif olarak, istediğiniz bir düzenleyiciye kopyalayıp yapıştırmak, değerleri ayarlamak ve ardından komutu komut satırına kopyalamak Cloud Shell.
Önemli
Komutunu çalıştırmadan önce aşağıdaki varlıklar için değerleri belirtin:
- Daha önce oluşturduğunuz kaynak grubunun adı.
- Olay hub'ı ad alanının adı.
- Olay hub'ı adı. Değeri olduğu gibi bırakın (hubdatamigration).
- SQL sunucusunun adı.
- SQL kullanıcı adı ve parolası.
- Veritabanının adı.
- Depolama hesabının adı.
- İşlev uygulamasının adı.
az deployment group create \ --resource-group rgDataMigration \ --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/event-grid/EventHubsDataMigration.json \ --parameters eventHubNamespaceName=<event-hub-namespace> eventHubName=hubdatamigration sqlServerName=<sql-server-name> sqlServerUserName=<user-name> sqlServerPassword=<password> sqlServerDatabaseName=<database-name> storageName=<unique-storage-name> functionAppName=<app-name>Komutu çalıştırmak için Cloud Shell penceresinde ENTER tuşuna basın. Bir grup kaynak oluştururken bu işlem biraz zaman alır. Komutun sonucunda hata olmadığını doğrular.
Portalda Cloud Shell (veya) Cloud Shell penceresinin sağ üst köşesindeki X düğmesini seçerek Cloud Shell kapatın.
Kaynakların oluşturulanı doğrulayın
Sol Azure portal Kaynak grupları'ı seçin.
Arama kutusuna kaynak grubu adının girerek kaynak grupları listesini filtrele.
Listeden kaynak grubu seçin.
Kaynak grubunda aşağıdaki kaynakları gördüğünüzden onaylayın:
Azure Synapse Analytics'de tablo oluşturma
CreateDataWarehouseTable.sql betiği çalıştırarak veri ambarında bir tablo oluşturun. Betiği çalıştırmak için portalda Visual Studio veya Sorgu Düzenleyicisi kullanabilirsiniz. Aşağıdaki adımlarda, aşağıdaki adımları kullanarak Sorgu Düzenleyicisi:
Kaynak grubunun kaynak listesinde ayrılmış SQL havuzu'nızı seçin.
Ayrılmış SQL havuzu sayfasının sol menüsündeki Ortak Görevler bölümünde Sorgu düzenleyicisi (önizleme) öğesini seçin.
SQL sunucusu için kullanıcı ve parola adını girin ve Tamam'ı seçin. İstemcinizin SQL server'a erişmesini izin verme hakkında bir ileti görüyorsanız şu adımları izleyin:
- Şu bağlantıyı seçin: Sunucu güvenlik duvarını ayarlayın.
- Güvenlik duvarı ayarları sayfasında, araç çubuğunda İstemci IP'sini ekle'yi ve ardından araç çubuğunda Kaydet'i seçin.
- Başarılı iletisinde Tamam'ı seçin.
- Ayrılmış SQL havuzu sayfasına geri gidin ve sol menüden Sorgu düzenleyicisi (önizleme) öğesini seçin.
- Kullanıcı ve parola girin ve ardından Tamam'ı seçin.
Sorgu penceresinde aşağıdaki SQL betiğine kopyalayıp çalıştırın:
CREATE TABLE [dbo].[Fact_WindTurbineMetrics] ( [DeviceId] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [MeasureTime] datetime NULL, [GeneratedPower] float NULL, [WindSpeed] float NULL, [TurbineSpeed] float NULL ) WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = ROUND_ROBIN);
Öğreticinin sonunda verilerin oluşturulanı doğrulamak için bu sekmeyi veya pencereyi açık tutabilirsiniz.
İşlev çalışma zamanı sürümünü güncelleştirme
Web tarayıcısında başka bir sekme açın ve Azure portal.
Sol Azure portal Kaynak grupları'ı seçin.
İşlev uygulamasının mevcut olduğu kaynak grubunu seçin.
Kaynak grubunun kaynak listesinde işlev uygulamasını seçin.
Sol menüde Ayarlar'ın altında Yapılandırma'ya tıklayın.
Sağ bölmede İşlev çalışma zamanı ayarları sekmesine geçiş yapın.
Çalışma zamanı sürümünü ~3 olarak güncelleştirin.
Araç çubuğunda Kaydet’i seçin.
Değişiklikleri Kaydet onay kutusu üzerinde devam' ı seçin.
Azure İşlevleri uygulamasını yayımlama
Visual Studio 'Yu başlatın.
Önkoşulların bir parçası olarak GitHub 'Dan Indirdiğiniz Eventhubscaptureeventgriddemo. sln çözümünü açın.
/samples/e2e/EventHubsCaptureEventGridDemoKlasörü klasöründe bulabilirsiniz.Çözüm Gezgini, Functionegdwdumper projesi öğesine sağ tıklayın ve Yayımla' yı seçin.
Aşağıdaki ekranı görürseniz Başlat' ı seçin.
Yayımla Iletişim kutusunda hedef için Azure ' u seçin ve İleri' yi seçin.
Azure işlev uygulaması (Windows) öğesini seçin ve İleri' yi seçin.
İşlevler örneği sekmesinde Azure aboneliğinizi seçin, kaynak grubunu genişletin ve işlev uygulaması ' nı seçin ve ardından son' u seçin. Henüz yapmadıysanız Azure hesabınızda oturum açmanız gerekir.
Yayımla sayfasında, hizmet bağımlılıkları bölümünde, depolama için Yapılandır ' ı seçin.
Bağımlılığı Yapılandır sayfasında, aşağıdaki adımları izleyin:
daha önce oluşturduğunuz Depolama hesabını seçin ve ardından İleri' yi seçin.
Bağlantı dizesi için bir ad belirtin ve bağlantı dizesini kaydet seçeneği için hiçbiri ' ni seçin ve ardından İleri' yi seçin.
C# kod dosyası ve gizli dizileri depolama seçeneğini belirleyip son' u seçin.
Visual Studio profili yapılandırdığında Yayımla’yı seçin.
Azure işlevi sayfası açık olan sekmede Sol menüdeki işlevler ' i seçin. Eventgridtriggermigratedata işlevinin listede görüntülendiğini doğrulayın. Bunu görmüyorsanız, Visual Studio 'dan yeniden yayımlamayı deneyin ve ardından portalda sayfayı yenileyin.
İşlevi yayımladıktan sonra olaya abone olmaya hazır olursunuz.
Olaya abone olma
Yeni bir sekmede veya bir Web tarayıcısının yeni penceresinde Azure Portalgidin.
Azure portal Sol menüdeki kaynak grupları ' nı seçin.
Arama kutusuna kaynak grubunuzun adını girerek kaynak grupları listesini filtreleyin.
Listeden kaynak grubunuzu seçin.
Kaynak listesinden Event Hubs ad alanını seçin.
Event Hubs ad alanı sayfasında, sol taraftaki menüden Olaylar ' ı seçin ve ardından araç çubuğunda + olay aboneliği ' ni seçin.
Olay aboneliği oluştur sayfasında, aşağıdaki adımları izleyin:
Olay aboneliği için bir ad girin.
Sistem konusu için bir ad girin. Bir sistem konusu, gönderenin olayları gönderebilmesi için bir uç nokta sağlar. Daha fazla bilgi için bkz. sistem konuları
Uç nokta türü Için Azure işlevi' ni seçin.
Uç nokta için bağlantıyı seçin.
Azure Işlevi Seç sayfasında, otomatik olarak doldurulmamışsa bu adımları izleyin.
- Azure işlevi olan Azure aboneliğini seçin.
- İşlevin kaynak grubunu seçin.
- İşlev uygulamasını seçin.
- Dağıtım yuvasını seçin.
- Eventgridtriggermigratedata işlevini seçin.
Azure Işlevi Seç sayfasında Seçimi Onayla' yı seçin.
Ardından, olay aboneliği oluştur sayfasına dönün, Oluştur' u seçin.
Olay aboneliğinin oluşturulduğunu doğrulayın. Event Hubs ad alanı için Olaylar sayfasındaki olay abonelikleri sekmesine geçin.
Kaynak grubundaki kaynak listesinde App Service planı (App Service değil) seçin.
Veri oluşturmak için uygulama çalıştırma
Olay Hub 'ınızı ayarlamayı tamamladınız, SQL havuzunu (eski adıyla SQL veri ambarı), Azure işlev uygulamasını ve olay aboneliğini ayırabilirsiniz. Olay hub’ı için veri oluşturan bir uygulamayı çalıştırmadan önce birkaç değeri yapılandırmanız gerekir.
Azure portal, daha önce yaptığınız gibi kaynak grubunuza gidin.
Event Hubs ad alanını seçin.
Event Hubs ad alanı sayfasında sol menüdeki paylaşılan erişim ilkeleri ' ni seçin.
İlke listesinde RootManageSharedAccessKey öğesini seçin.
Bağlantı dizesi-birincil anahtar metin kutusunun yanındaki Kopyala düğmesini seçin.
Visual Studio çözümünüze geri dönün.
WindTurbineDataGenerator projesine sağ tıklayın ve Başlangıç projesi olarak ayarla' yı seçin.
WindTurbineDataGenerator projesinde program.cs dosyasını açın.
<EVENT HUBS NAMESPACE CONNECTION STRING>Portaldan kopyaladığınız bağlantı dizesiyle değiştirin.<EVENT HUB NAME>Olay Hub 'ının adıyla değiştirin.private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/..."; private const string EventHubName = "hubdatamigration";Çözümü derleyin. WindTurbineGenerator.exe uygulamasını çalıştırın.
Birkaç dakika sonra sorgu penceresini açık olan diğer tarayıcı sekmesinde, geçirilen veriler için veri ambarınızdaki tabloyu sorgulayın.
select * from [dbo].[Fact_WindTurbineMetrics]
Çözümü izleme
Bu bölüm, çözümü izlemeye veya sorunlarını gidermenize yardımcı olur.
Depolama hesabındaki yakalanan verileri görüntüleme
Kaynak grubuna gidin ve olay verilerini yakalamak için kullanılan depolama hesabını seçin.
Depolama hesabı sayfasında sol menüdeki Depolama Gezgini (Önizleme) öğesini seçin.
BLOB kapsayıcıları' nı genişletin ve windturbinecapture' ı seçin.
Sağ bölmedeki Event Hubs ad alanıyla aynı adlı klasörü açın.
Olay Hub 'ınız (hubdatamigration) ile aynı adlı klasörü açın.
Klasörlerin ayrıntılarına gidin ve AVRO dosyalarını görürsünüz. Aşağıda bir örnek verilmiştir:
Event Grid tetikleyicisinin işlevi çağırılacağını doğrulayın
Kaynak grubuna gidin ve işlev uygulamasını seçin.
Sol menüdeki işlevler ' i seçin.
Listeden Eventgridtriggermigratedata işlevini seçin.
İşlev sayfasında, sol taraftaki menüden izleyici ' yi seçin.
Uygulama öngörülerini, çağırma günlüklerini yakalamak üzere yapılandırmak için Yapılandır ' ı seçin.
Yeni bir Application Insights kaynağı oluşturun veya var olan bir kaynağı kullanın.
İşlevin izleyici sayfasına geri gidin.
Olayları gönderen istemci uygulamasının (WindTurbineDataGenerator) hala çalıştığını doğrulayın. Aksi takdirde, uygulamayı çalıştırın.
Birkaç dakika bekleyin (5 dakika veya daha fazla) ve işlev etkinleştirmeleri görmek için Yenile düğmesini seçin.
Ayrıntıları görmek için bir çağrı seçin.
Event Grid, olay verilerini abonelere dağıtır. Aşağıdaki örnek, bir olay hub'ı üzerinden veri akışı bir blobda yakalanırken oluşturulan olay verilerini gösterir. Özellikle, nesnesinde
fileUrlözelliğindatadepolamada blobu noktalara dikkat eder. İşlev uygulaması yakalanan verilerle blob dosyasını almak için bu URL'yi kullanır.{ "topic": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/rgDataMigration/providers/Microsoft.EventHub/namespaces/spehubns1207", "subject": "hubdatamigration", "eventType": "Microsoft.EventHub.CaptureFileCreated", "id": "4538f1a5-02d8-4b40-9f20-36301ac976ba", "data": { "fileUrl": "https://spehubstorage1207.blob.core.windows.net/windturbinecapture/spehubns1207/hubdatamigration/0/2020/12/07/21/49/12.avro", "fileType": "AzureBlockBlob", "partitionId": "0", "sizeInBytes": 473444, "eventCount": 2800, "firstSequenceNumber": 55500, "lastSequenceNumber": 58299, "firstEnqueueTime": "2020-12-07T21:49:12.556Z", "lastEnqueueTime": "2020-12-07T21:50:11.534Z" }, "dataVersion": "1", "metadataVersion": "1", "eventTime": "2020-12-07T21:50:12.7065524Z" }
Verilerin ayrılmış SQL havuzunda depolanmış olduğunu doğrulayın
Sorgu penceresinin açık olduğu tarayıcı sekmesinde, geçirilen veriler için ayrılmış SQL havuzunuzdaki tabloyu sorgulayabilirsiniz.

Sonraki adımlar
- Azure mesajlaşma servislerindeki farklar hakkında bilgi sahibi olmak için, bkz. iletiler teslim eden Azure hizmetleri arasında seçim yapma.
- Event Grid’e giriş için bkz. Event Grid hakkında.
- Event Hubs Capture’a giriş için bkz. Azure portalını kullanarak Event Hubs Capture’ı etkinleştirme.
- Örneği ayarlama ve çalıştırma hakkında daha fazla bilgi için bkz. Event Hubs Capture ve Event Grid örneği.