Öğretici: veri ambarına büyük veri akışıTutorial: Stream big data into a data warehouse

Azure Event Grid , uygulamalardan ve hizmetlerden bildirimleri (olayları) tepki etmenizi sağlayan akıllı bir olay yönlendirme hizmetidir.Azure Event Grid is an intelligent event routing service that enables you to react to notifications (events) from apps and services. Örneğin, bir Azure Işlevini Azure Blob depolama alanına veya Azure Data Lake Storage yakalanan Event Hubs verileri işleyecek şekilde tetikleyip verileri diğer veri depolarına geçirebilirler.For example, it can trigger an Azure Function to process Event Hubs data that has been captured to an Azure Blob storage or Azure Data Lake Storage, and migrate the data to other data repositories. Bu Event Hubs ve Event Grid tümleştirme örneği , yakalanan Event Hubs verilerini blob DEPOLAMADAN bir SQL veri ambarına sorunsuzca geçirmek için Event Grid ile Event Hubs nasıl kullanacağınızı gösterir.This Event Hubs and Event Grid integration sample shows you how to use Event Hubs with Event Grid to seamlessly migrate captured Event Hubs data from blob storage to a SQL Data Warehouse.

Uygulamaya genel bakış

Bu diyagram, bu öğreticide oluşturduğunuz çözümün iş akışını gösterir:This diagram depicts the workflow of the solution you build in this tutorial:

  1. Azure Olay Hub 'ına gönderilen veriler bir Azure Blob depolama alanında yakalanır.Data sent to an Azure event hub is captured in an Azure blob storage.
  2. Veri yakalama tamamlandığında bir olay oluşturulup bir Azure Event Grid 'e gönderilir.When the data capture is complete, an event is generated and sent to an Azure event grid.
  3. Event Grid bu olay verilerini bir Azure işlev uygulamasına iletir.The event grid forwards this event data to an Azure function app.
  4. İşlev uygulaması, blob 'u depodan almak için olay verilerinde blob URL 'sini kullanır.The function app uses the blob URL in the event data to retrieve the blob from the storage.
  5. İşlev uygulaması, blob verilerini bir Azure SQL veri ambarına geçirir.The function app migrates the blob data to an Azure SQL data warehouse.

Bu makalede, aşağıdaki adımları uygulayın:In this article, you take the following steps:

  • Altyapıyı dağıtmak için bir Azure Resource Manager şablonu kullanın: bir olay hub 'ı, bir depolama hesabı, bir işlev uygulaması, bir SQL veri ambarı.Use an Azure Resource Manager template to deploy the infrastructure: an event hub, a storage account, a function app, a SQL data warehouse.
  • Veri ambarında bir tablo oluşturun.Create a table in the data warehouse.
  • İşlev uygulamasına kod ekleyin.Add code to the function app.
  • Olaya abone olun.Subscribe to the event.
  • Olay Hub 'ına veri gönderen uygulamayı çalıştırın.Run app that sends data to the event hub.
  • Veri ambarında geçirilen verileri görüntüleyin.View migrated data in data warehouse.

Ön koşullarPrerequisites

Not

Bu makale yeni Azure PowerShell Az modülünü kullanacak şekilde güncelleştirilmiştir.This article has been updated to use the new Azure PowerShell Az module. En azından Aralık 2020'ye kadar hata düzeltmeleri almaya devam edecek olan AzureRM modülünü de kullanmaya devam edebilirsiniz.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Yeni Az modülüyle AzureRM'nin uyumluluğu hakkında daha fazla bilgi edinmek için bkz. Yeni Azure PowerShell Az modülüne giriş.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az modülü yükleme yönergeleri için bkz. Azure PowerShell'i yükleme.For Az module installation instructions, see Install Azure PowerShell.

Bu öğreticiyi tamamlamak için aşağıdakiler gereklidir:To complete this tutorial, you must have:

Altyapıyı dağıtmaDeploy the infrastructure

Bu adımda, gerekli altyapıyı bir Kaynak Yöneticisi şablonuyladağıtırsınız.In this step, you deploy the required infrastructure with a Resource Manager template. Şablonu dağıttığınızda aşağıdaki kaynaklar oluşturulur:When you deploy the template, the following resources are created:

  • Yakalama özelliği etkinleştirilmiş Olay Hub 'ı.Event hub with the Capture feature enabled.
  • Yakalanan dosyalar için depolama hesabı.Storage account for the captured files.
  • İşlev uygulamasını barındırmak için App Service planıApp service plan for hosting the function app
  • Olayı işlemek için işlev uygulamasıFunction app for processing the event
  • Veri ambarını barındırmak için SQL ServerSQL Server for hosting the data warehouse
  • Geçirilen verileri depolamak için SQL Veri AmbarıSQL Data Warehouse for storing the migrated data

Azure portal Azure Cloud Shell başlatmaLaunch Azure Cloud Shell in Azure portal

  1. Azure portalında oturum açın.Sign in to the Azure portal.

  2. Üstteki Cloud Shell düğmesini seçin.Select Cloud Shell button at the top.

    Azure portal

  3. Cloud Shell tarayıcının altında açıldığını görürsünüz.You see the Cloud Shell opened at the bottom of the browser.

    Cloud Shell

  4. Cloud Shell, Bash ve PowerShellarasında seçim yapmak Için bir seçenek görürseniz Bash' i seçin.In the Cloud Shell, if you see an option to select between Bash and PowerShell, select Bash.

  5. Cloud Shell ilk kez kullanıyorsanız, depolama alanı oluştur' u seçerek bir depolama hesabı oluşturun.If you are using the Cloud Shell for the first time, create a storage account by selecting Create storage. Azure Cloud Shell, bazı dosyaları depolamak için bir Azure depolama hesabı gerektirir.Azure Cloud Shell requires an Azure storage account to store some files.

    Cloud Shell için depolama oluşturma

  6. Cloud Shell başlatılana kadar bekleyin.Wait until the Cloud Shell is initialized.

    Cloud Shell için depolama oluşturma

Azure CLI kullanmaUse Azure CLI

  1. Aşağıdaki CLı komutunu çalıştırarak bir Azure Kaynak grubu oluşturun:Create an Azure resource group by running the following CLI command:
    1. Aşağıdaki komutu kopyalayıp Cloud Shell penceresine yapıştırınCopy and paste the following command into the Cloud Shell window

      az group create -l eastus -n <Name for the resource group>
      
    2. Kaynak grubu için bir ad belirtinSpecify a name for the resource group

    3. ENTER'a basın.Press ENTER.

      Örnek aşağıda verilmiştir:Here is an example:

      user@Azure:~$ az group create -l eastus -n ehubegridgrp
      {
        "id": "/subscriptions/00000000-0000-0000-0000-0000000000000/resourceGroups/ehubegridgrp",
        "location": "eastus",
        "managedBy": null,
        "name": "ehubegridgrp",
        "properties": {
          "provisioningState": "Succeeded"
        },
        "tags": null
      }
      
  2. Önceki bölümde bahsedilen tüm kaynakları (Olay Hub 'ı, depolama hesabı, işlevler uygulaması, SQL veri ambarı) aşağıdaki CLı komutunu çalıştırarak dağıtın:Deploy all the resources mentioned in the previous section (event hub, storage account, functions app, SQL data warehouse) by running the following CLI command:
    1. Komutu kopyalayıp Cloud Shell penceresine yapıştırın.Copy and paste the command into the Cloud Shell window. Alternatif olarak, seçtiğiniz bir düzenleyiciye kopyalamak/yapıştırmak, değerleri ayarlamak ve sonra Cloud Shell komutu kopyalamak isteyebilirsiniz.Alternatively, you may want to copy/paste into an editor of your choice, set values, and then copy the command to the Cloud Shell.

      az group deployment create \
          --resource-group rgDataMigrationSample \
          --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>
      
    2. Aşağıdaki varlıkların değerlerini belirtin:Specify values for the following entities:

      1. Daha önce oluşturduğunuz kaynak grubunun adı.Name of the resource group you created earlier.
      2. Olay Hub 'ı ad alanının adı.Name for the event hub namespace.
      3. Olay Hub 'ının adı.Name for the event hub. Değeri olduğu gibi (hubdatamigration) bırakabilirsiniz.You can leave the value as it is (hubdatamigration).
      4. SQL Server için ad.Name for the SQL server.
      5. SQL kullanıcısının ve parolanın adı.Name of the SQL user and password.
      6. SQL veri ambarı için adName for the SQL data warehouse
      7. Depolama hesabının adı.Name of the storage account.
      8. İşlev uygulamasının adı.Name for the function app.
    3. Komutu çalıştırmak için Cloud Shell penceresinde ENTER tuşuna basın.Press ENTER in the Cloud Shell window to run the command. Bu işlem biraz zaman alabilir. Bu, bir dizi kaynak oluştururken biraz zaman alabilir.This process may take a while since you are creating a bunch of resources. Komutun sonucunda, hiçbir başarısızlık olmadığından emin olun.In the result of the command, ensure that there have been no failures.

Azure PowerShell’i kullanmaUse Azure PowerShell

  1. Azure Cloud Shell ' de PowerShell moduna geçin.In Azure Cloud Shell, switch to PowerShell mode. Azure Cloud Shell sol üst köşesinde aşağı ok ' i seçin ve PowerShell' i seçin.Select down arrow in the top-left corner of Azure Cloud Shell, and select PowerShell.

    PowerShell 'e geç

  2. Aşağıdaki komutu çalıştırarak bir Azure Kaynak grubu oluşturun:Create an Azure resource group by running the following command:

    1. Aşağıdaki komutu kopyalayıp Cloud Shell penceresine yapıştırın.Copy and paste the following command into the Cloud Shell window.

      New-AzResourceGroup -Name rgDataMigration -Location westcentralus
      
    2. Kaynak grubuiçin bir ad belirtin.Specify a name for the resource group.

    3. ENTER tuşuna basın.Press ENTER.

  3. Önceki bölümde bahsedilen tüm kaynakları (Olay Hub 'ı, depolama hesabı, işlevler uygulaması, SQL veri ambarı) aşağıdaki komutu çalıştırarak dağıtın:Deploy all the resources mentioned in the previous section (event hub, storage account, functions app, SQL data warehouse) by running the following command:

    1. Komutu kopyalayıp Cloud Shell penceresine yapıştırın.Copy and paste the command into the Cloud Shell window. Alternatif olarak, seçtiğiniz bir düzenleyiciye kopyalamak/yapıştırmak, değerleri ayarlamak ve sonra Cloud Shell komutu kopyalamak isteyebilirsiniz.Alternatively, you may want to copy/paste into an editor of your choice, set values, and then copy the command to the Cloud Shell.

      New-AzResourceGroupDeployment -ResourceGroupName rgDataMigration -TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/event-grid/EventHubsDataMigration.json -eventHubNamespaceName <event-hub-namespace> -eventHubName hubdatamigration -sqlServerName <sql-server-name> -sqlServerUserName <user-name> -sqlServerDatabaseName <database-name> -storageName <unique-storage-name> -functionAppName <app-name>
      
    2. Aşağıdaki varlıkların değerlerini belirtin:Specify values for the following entities:

      1. Daha önce oluşturduğunuz kaynak grubunun adı.Name of the resource group you created earlier.
      2. Olay Hub 'ı ad alanının adı.Name for the event hub namespace.
      3. Olay Hub 'ının adı.Name for the event hub. Değeri olduğu gibi (hubdatamigration) bırakabilirsiniz.You can leave the value as it is (hubdatamigration).
      4. SQL Server için ad.Name for the SQL server.
      5. SQL kullanıcısının ve parolanın adı.Name of the SQL user and password.
      6. SQL veri ambarı için adName for the SQL data warehouse
      7. Depolama hesabının adı.Name of the storage account.
      8. İşlev uygulamasının adı.Name for the function app.
    3. Komutu çalıştırmak için Cloud Shell penceresinde ENTER tuşuna basın.Press ENTER in the Cloud Shell window to run the command. Bu işlem biraz zaman alabilir. Bu, bir dizi kaynak oluştururken biraz zaman alabilir.This process may take a while since you are creating a bunch of resources. Komutun sonucunda, hiçbir başarısızlık olmadığından emin olun.In the result of the command, ensure that there have been no failures.

Cloud Shell kapatınClose the Cloud Shell

Cloud Shell penceresinin sağ üst köşesindeki Portal (veya) X düğmesindeki Cloud Shell düğmesini seçerek Cloud Shell 'i kapatın.Close the cloud shell by selecting the Cloud Shell button in the portal (or) X button in the top-right corner of the Cloud Shell window.

Kaynakların oluşturulduğunu doğrulamaVerify that the resources are created

  1. Azure portal Sol menüdeki kaynak grupları ' nı seçin.In the Azure portal, select Resource groups on the left menu.

  2. Arama kutusuna kaynak grubunuzun adını girerek kaynak grupları listesini filtreleyin.Filter the list of resource groups by entering the name of your resource group in the search box.

  3. Listeden kaynak grubunuzu seçin.Select your resource group in the list.

    Kaynak grubunuzu seçin

  4. Kaynak grubunda aşağıdaki kaynakları görtığınızdan emin olun:Confirm that you see the following resources in the resource group:

    Kaynak grubundaki kaynaklar

SQL Veri Ambarında tablo oluşturmaCreate a table in SQL Data Warehouse

Createdatawarehousetable. SQL betiğini çalıştırarak veri Ambarınızda tablo oluşturun.Create a table in your data warehouse by running the CreateDataWarehouseTable.sql script. Betiği çalıştırmak için, Visual Studio 'Yu veya portalda sorgu düzenleyicisini kullanabilirsiniz.To run the script, you can use Visual Studio or the Query Editor in the portal. Aşağıdaki adımlarda sorgu Düzenleyicisi 'nin nasıl kullanılacağı gösterilmektedir:The following steps show you how to use the Query Editor:

  1. Kaynak grubundaki kaynak listesinde SQL veri Ambarınızı seçin.In the list of resources in the resource group, select your SQL data warehouse.

  2. SQL veri ambarı sayfasında sol menüdeki sorgu Düzenleyicisi 'ni (Önizleme) seçin.In the SQL data warehouse page, select Query editor (preview) in the left menu.

    SQL veri ambarı sayfası

  3. SQL Server için Kullanıcı ve parola adını girip Tamam' ı seçin.Enter the name of user and password for the SQL server, and select OK.

    SQL Server kimlik doğrulaması

  4. Sorgu penceresinde aşağıdaki SQL betiğini kopyalayın ve çalıştırın:In the query window, copy and run the following SQL script:

    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);
    

    SQL sorgusunu Çalıştır

  5. Öğreticinin sonunda verilerin oluşturulduğunu doğrulayabilmeniz için bu sekmeyi veya pencereyi açık tutun.Keep this tab or window open so that you can verify that the data is created at the end of the tutorial.

Azure İşlevleri uygulamasını yayımlamaPublish the Azure Functions app

  1. Visual Studio 'Yu başlatın.Launch Visual Studio.

  2. Önkoşulların bir parçası olarak GitHub 'Dan Indirdiğiniz Eventhubscaptureeventgriddemo. sln çözümünü açın.Open the EventHubsCaptureEventGridDemo.sln solution that you downloaded from the GitHub as part of the prerequisites.

  3. Çözüm Gezgini’nde FunctionEGDWDumper’a sağ tıklayın ve Yayımla’yı seçin.In Solution Explorer, right-click FunctionEGDWDumper, and select Publish.

    İşlev uygulaması yayımlama

  4. Aşağıdaki ekranı görürseniz Başlat' ı seçin.If you see the following screen, select Start.

    Yayımla düğmesini Başlat

  5. Bir yayımlama hedefi seçin sayfasında, Varolanı Seç seçeneğini belirleyin ve Profil oluştur' u seçin.In the Pick a publish target page, select the Select existing option, and select Create Profile.

    Yayımlama hedefi seçme

  6. App Service sayfasında, Azure aboneliğiniziseçin, kaynak grubunuzda işlev uygulamasını seçin ve Tamam' ı seçin.In the App Service page, select your Azure subscription, select the function app in your resource group, and select OK.

    App Service sayfası

  7. Visual Studio profili yapılandırdığında Yayımla’yı seçin.When Visual Studio has configured the profile, select Publish.

    Yayımla’yı seçme

İşlevi yayımladıktan sonra olaya abone olmaya hazır olursunuz.After publishing the function, you're ready to subscribe to the event.

Olaya abone olmaSubscribe to the event

  1. Yeni bir sekmede veya bir Web tarayıcısının yeni penceresinde Azure Portalgidin.In a new tab or new window of a web browser, navigate to the Azure portal.

  2. Azure portal Sol menüdeki kaynak grupları ' nı seçin.In the Azure portal, select Resource groups on the left menu.

  3. Arama kutusuna kaynak grubunuzun adını girerek kaynak grupları listesini filtreleyin.Filter the list of resource groups by entering the name of your resource group in the search box.

  4. Listeden kaynak grubunuzu seçin.Select your resource group in the list.

    Kaynak grubunuzu seçin

  5. Listeden App Service planı seçin.Select the App Service plan in the list.

  6. App Service planı sayfasında, sol taraftaki menüden uygulamalar ' ı seçin ve işlev uygulamasını seçin.In the App Service Plan page, select Apps in the left menu, and select the function app.

    İşlevler uygulamanızı seçin

  7. İşlev uygulamasını genişletin, işlevler ' i genişletin ve ardından işlevinizi seçin.Expand the function app, expand functions, and then select your function.

    Azure işlevinizi seçin

  8. Araç çubuğunda Event Grid aboneliği Ekle ' yi seçin.Select Add Event Grid subscription on the toolbar.

  9. Event Grid aboneliği oluştur sayfasında, aşağıdaki işlemleri yapın:In the Create Event Grid Subscription page, do the following actions:

    1. Konu ayrıntıları bölümünde, aşağıdaki işlemleri yapın:In the TOPIC DETAILS section, do the following actions:

      1. Azure aboneliğinizi seçin.Select your Azure subscription.
      2. Azure kaynak grubunu seçin.Select the Azure resource group.
      3. Event Hubs ad alanını seçin.Select the Event Hubs namespace.
    2. Olay ABONELIĞI ayrıntıları sayfasında, abonelik için bir ad girin (örneğin: captureEventSub) ve Oluştur' u seçin.In the EVENT SUBSCRIPTION DETAILS page, enter a name for the subscription (for example: captureEventSub), and select Create.

      Event Grid aboneliği oluştur

Veri oluşturmak için uygulama çalıştırmaRun the app to generate data

Olay hub’ı, SQL veri ambarı, Azure işlev uygulaması ve olay aboneliğinizi ayarlamayı tamamladınız.You've finished setting up your event hub, SQL data warehouse, Azure function app, and event subscription. Olay hub’ı için veri oluşturan bir uygulamayı çalıştırmadan önce birkaç değeri yapılandırmanız gerekir.Before running an application that generates data for event hub, you need to configure a few values.

  1. Azure portal, daha önce yaptığınız gibi kaynak grubunuza gidin.In the Azure portal, navigate to your resource group as you did earlier.

  2. Event Hubs ad alanını seçin.Select the Event Hubs namespace.

  3. Event Hubs ad alanı sayfasında sol menüdeki paylaşılan erişim ilkeleri ' ni seçin.In the Event Hubs Namespace page, select Shared access policies on the left menu.

  4. İlke listesinde RootManageSharedAccessKey öğesini seçin.Select RootManageSharedAccessKey in the list of policies.

  5. Bağlantı dizesi-birincil anahtar metin kutusunun yanındaki Kopyala düğmesini seçin.Select the copy button next to the Connection string-primary key text box.

    Olay Hub 'ı ad alanı için bağlantı dizesi

  6. Visual Studio çözümünüze geri dönün.Go back to your Visual Studio solution.

  7. WindTurbineDataGenerator projesinde program.cs dosyasını açın.In the WindTurbineDataGenerator project, open program.cs.

  8. İki sabit değeri değiştirin.Replace the two constant values. EventHubConnectionString için kopyalanan değeri kullanın.Use the copied value for EventHubConnectionString. Olay hub’ının adı için hubdatamigration kullanın.Use hubdatamigration the event hub name. Olay Hub 'ı için farklı bir ad kullandıysanız, bu adı belirtin.If you used a different name for the event hub, specify that name.

    private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/...";
    private const string EventHubName = "hubdatamigration";
    
  9. Çözümü derleyin.Build the solution. WindTurbineGenerator. exe uygulamasını çalıştırın.Run the WindTurbineGenerator.exe application.

  10. Birkaç dakika sonra, veri ambarınızdaki tabloda geçirilen verileri sorgulayın.After a couple of minutes, query the table in your data warehouse for the migrated data.

    Sorgu sonuçları

Olay Hub 'ı tarafından oluşturulan olay verileriEvent data generated by the event hub

Event Grid, olay verilerini abonelere dağıtır.Event Grid distributes event data to the subscribers. Aşağıdaki örnek, bir olay hub 'ı üzerinden veri akışı bir blob 'da yakalandıktan sonra oluşturulan olay verilerini gösterir.The following example shows event data generated when data streaming through an event hub is captured in a blob. Özellikle, data nesnesi içindeki fileUrl özelliğinin depolama alanındaki blobu işaret ettiğini fark eder.In particular, notice the fileUrl property in the data object points to the blob in the storage. İşlev uygulaması, yakalanan verilerle blob dosyasını almak için bu URL 'YI kullanır.The function app uses this URL to retrieve the blob file with captured data.

[
    {
        "topic": "/subscriptions/<guid>/resourcegroups/rgDataMigrationSample/providers/Microsoft.EventHub/namespaces/tfdatamigratens",
        "subject": "eventhubs/hubdatamigration",
        "eventType": "Microsoft.EventHub.CaptureFileCreated",
        "eventTime": "2017-08-31T19:12:46.0498024Z",
        "id": "14e87d03-6fbf-4bb2-9a21-92bd1281f247",
        "data": {
            "fileUrl": "https://tf0831datamigrate.blob.core.windows.net/windturbinecapture/tfdatamigratens/hubdatamigration/1/2017/08/31/19/11/45.avro",
            "fileType": "AzureBlockBlob",
            "partitionId": "1",
            "sizeInBytes": 249168,
            "eventCount": 1500,
            "firstSequenceNumber": 2400,
            "lastSequenceNumber": 3899,
            "firstEnqueueTime": "2017-08-31T19:12:14.674Z",
            "lastEnqueueTime": "2017-08-31T19:12:44.309Z"
        }
    }
]

Sonraki adımlarNext steps