Tutorial: Streaming big data ke dalam gudang data

Azure Event Grid adalah layanan perutean acara cerdas yang memungkinkan Anda bereaksi terhadap notifikasi atau acara dari aplikasi dan layanan. Misalnya, ini dapat memicu fungsi Azure untuk memproses data Azure Event Hubs yang diambil ke penyimpanan Blob atau Data Lake Storage. Contoh ini menunjukkan kepada Anda cara menggunakan Event Grid dan Azure Functions untuk memigrasikan data Event Hub yang ditangkap dari penyimpanan blob ke Azure Synapse Analytics, khususnya kumpulan SQL khusus.

Gambaran umum aplikasi

Diagram ini menggambarkan alur kerja solusi yang Anda buat dalam tutorial ini:

  1. Data yang dikirim ke hub acara Azure diambil dalam penyimpanan blob Azure.
  2. saat penangkapan data telah selesai, acara dihasilkan dan dikirim ke Event Grid.
  3. Azure Event Grid kemudian meneruskan data peristiwa ini ke aplikasi fungsi Azure.
  4. Aplikasi fungsi menggunakan URL blob dalam data acara untuk mengambil blob dari penyimpanan.
  5. Aplikasi fungsi memigrasikan data blob ke Azure Synapse Analytics.

Dalam artikel ini, lakukan langkah-langkah berikut:

  • Menyebarkan infrastruktur yang diperlukan untuk tutorial ini
  • Menerbitkan kode ke Aplikasi Functions
  • Membuat langganan Event Grid
  • Melakukan streaming data sampel ke Pusat Aktivitas
  • Memastikan data yang diambil dalam Azure Synapse Analytics

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan:

  • Langganan Azure. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
  • Studio Visual dengan beban kerja untuk: pengembangan desktop .NET, pengembangan Azure, pengembangan web dan ASP.NET, pengembangan Node.js, dan pengembangan Python.
  • Unduh proyek sampel EventHubsCaptureEventGridDemo ke komputer Anda.
    • WindTurbineDataGenerator – Penerbit sederhana yang mengirimkan data turbin angin sampel ke hub acara yang diaktifkan penangkap
    • FunctionDWDumper – Azure Function yang menerima pemberitahuan Azure Event Grid saat file Avro diambil ke blob Azure Storage. Ini menerima jalur URI blob, membaca isinya, dan mendorong data ini ke Azure Synapse Analytics (kumpulan SQL khusus).

Menyebarkan infrastruktur

Dalam langkah ini, Anda menyebarkan infrastruktur yang diperlukan dengan templat Resource Manager. Saat Anda menyebarkan templat, sumber daya berikut ini dibuat:

  • Hub acara dengan fitur Ambil diaktifkan.
  • Akun penyimpanan untuk file yang diambil.
  • Paket app service untuk menghosting aplikasi fungsi
  • Aplikasi fungsi untuk memproses acara
  • SQL Server untuk menghosting gudang data
  • Azure Synapse Analytics (kumpulan SQL khusus) untuk menyimpan data yang dimigrasikan

Menggunakan Azure CLI untuk menyebarkan infrastruktur

  1. Masuk ke portal Azure.

  2. Pilih tombol Cloud Shell di bagian atas.

    Cuplikan layar portal Azure yang menunjukkan pilihan tombol Cloud Shell.

  3. Anda melihat Cloud Shell dibuka di bagian bawah browser.

    1. jika Anda menggunakan Cloud Shell untuk pertama kalinya:
      1. jika Anda melihat opsi untuk memilih antara Bash dan PowerShell, pilih Bash.

        Cuplikan layar Cloud Shell dengan Bash dipilih.

      2. buat akun penyimpanan dengan memilih buat penyimpanan. Azure Cloud Shell memerlukan akun penyimpanan Azure untuk menyimpan beberapa file.

        Cuplikan layar yang menunjukkan pembuatan penyimpanan untuk Cloud Shell.

      3. Tunggu hingga Cloud Shell dimulai.

        Cuplikan layar yang menunjukkan Cloud Shell diinisialisasi.

  4. Dalam Cloud Shell, pilih Bash seperti yang ditunjukkan pada gambar di atas, jika memang belum dipilih.

  5. Buat grup sumber daya dengan menjalankan perintah berikut:

    1. Salin dan tempel perintah berikut ke jendela Cloud Shell. Ganti nama dan lokasi grup sumber daya jika diinginkan.

      az group create -l eastus -n rgDataMigration
      
    2. Tekan ENTER.

      Berikut contohnya:

      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
      }
      
  6. Sebarkan semua sumber daya yang disebutkan di bagian sebelumnya (hub acara, akun penyimpanan, aplikasi fungsi, Azure Synapse Analytics) dengan menjalankan perintah CLI berikut:

    1. Salin dan tempel perintah berikut ke jendela Cloud Shell. Atau, Anda mungkin ingin menyalin/menempel ke editor pilihan Anda, mengatur nilai, lalu menyalin perintah ke Cloud Shell.

      Penting

      Tentukan nilai untuk entitas berikut ini sebelum menjalankan perintah:

      • Nama grup sumber daya yang Anda buat sebelumnya.
      • Nama untuk namespace hub acara.
      • Nama untuk hub acara. Anda dapat membiarkan nilai ini (hubdatamigration).
      • Nama untuk server SQL.
      • Nama pengguna dan kata sandi SQL.
      • Nama untuk database.
      • Nama akun penyimpanan.
      • Masukkan untuk aplikasi fungsi.
      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>
      
    2. Tekan ENTER di jendela Cloud Shell untuk menjalankan perintah. Proses ini mungkin memakan waktu cukup lama sejak Anda membuat berbagai sumber. Dalam hasil perintah, pastikan bahwa tidak ada kegagalan.

  7. Tutup Cloud Shell dengan memilih tombol Cloud Shell di portal (atau) tombol X di pojok kanan atas jendela Cloud Shell.

Pastikan sumber daya dibuat

  1. Di portal Azure, pilih Grup sumber daya di menu sebelah kiri.

  2. Filter daftar grup sumber daya dengan memasukkan nama grup sumber daya Anda di kotak pencarian.

  3. Pilih grup sumber daya Anda dalam daftar.

    Cuplikan layar yang menunjukkan pilihan grup sumber daya Anda.

  4. Konfirmasikan bahwa Anda melihat sumber daya berikut di grup sumber daya:

    Cuplikan layar yang menampilkan sumber daya dalam grup sumber daya.

Membuat tabel di Azure Synapse Analytics

Di bagian ini, Anda membuat tabel dalam kumpulan SQL khusus yang Anda buat sebelumnya.

  1. Dalam daftar sumber daya dalam grup sumber daya, pilih kumpulan SQL khusus Anda.

  2. Pada halaman Kumpulan SQL khusus, di bagian Tugas Umum di menu sebelah kiri, pilih Editor kueri (pratinjau) .

    Cuplikan layar menampilkan pilihan Editor Kueri pada halaman kumpulan SQL Khusus di portal Azure.

  3. Masukkan nama pengguna dan kata sandi untuk server SQL, dan pilih OK. Jika Anda melihat pesan tentang mengizinkan klien Anda mengakses server SQL, pilih Izinkan IP Alamat <> IP Anda di server server <>SQL Anda, lalu pilih OK.

  4. Di jendela kueri, salin, dan jalankan skrip SQL berikut ini:

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

    Cuplikan layar menampilkan editor kueri.

  5. Jaga tab atau jendela ini terbuka sehingga Anda dapat memverifikasi bahwa data dibuat di akhir tutorial.

Menerbitkan aplikasi Azure Functions

Pertama, kelola profil penerbitan untuk aplikasi Azure Functions dari portal Microsoft Azure. kemudian, gunakan profil penerbitan untuk menerbitkan proyek atau aplikasi Azure Functions dari Visual Studio.

Mendapatkan profil penerbitan

  1. Pada halaman Grup Sumber Daya, pilih aplikasi Azure Functions dalam daftar sumber daya.

    Cuplikan layar yang menampilkan pemilihan aplikasi fungsi dalam daftar sumber daya untuk grup sumber daya.

  2. Pada halaman Aplikasi Azure Functions untuk aplikasi Anda, pilih Dapatkan profil penerbitan di bilah perintah.

    Cuplikan layar yang menampilkan pilihan tombol **Dapatkan Profil Penerbitan** pada bilah perintah halaman aplikasi fungsi.

  3. Unduh dan simpan file ke subfolder FunctionEGDDumper dari folder EventHubsCaptureEventGridDemo.

Menggunakan profil penerbitan untuk menerbitkan aplikasi Functions

  1. Luncurkan Visual Studio.

  2. Buka solusi EventHubsCaptureEventGridDemo.sln yang Anda unduh dari GitHub sebagai bagian dari prasyarat. Anda dapat menemukannya di folder /samples/e2e/EventHubsCaptureEventGridDemo.

  3. Di Penjelajah Solusi, klik kanan proyek FunctionEGDWDumper dan pilih Terbitkan.

  4. Di layar berikut, pilih Mulai atau Tambahkan profil penerbitan.

  5. Di kotak dialog Terbitkan, pilih Impor profil untuk Target, lalu pilih Berikutnya.

    Cuplikan layar yang menampilkan pilihan **Impor Profil** pada kotak dialog **Terbitkan**.

  6. Pada Impor profil tab, pilih file pengaturan terbitkan yang Anda simpan sebelumnya di folder FunctionEGDWDumper folder, lalu pilih Selesai.

  7. Saat Visual Studio telah mengonfigurasi profil, pilih Terbitkan. Konfirmasikan bahwa penerbitan berhasil.

  8. Di web browser yang mempunyai Fungsi Azure pilihFunctions di pilihan sebelah kiri. Konfirmasikan bahwa fungsi EventGridTriggerMigrateData muncul dalam daftar. Jika Anda tidak melihatnya, coba kembali menerbitkan dari Visual Studio lalu refresh halaman di portal.

    Cuplikan layar yang menunjukkan konfirmasi pembuatan fungsi.

Setelah menerbitkan fungsi ini, Anda siap berlangganan acara tersebut.

Berlangganan ke acara

  1. Di tab baru atau jendela baru browser web, navigasikan ke portal Azure.

  2. Di portal Azure, pilih Grup sumber daya di menu sebelah kiri.

  3. Filter daftar grup sumber daya dengan memasukkan nama grup sumber daya Anda di kotak pencarian.

  4. Pilih grup sumber daya Anda dalam daftar.

  5. Pilih namespace Hub Acara dari daftar sumber daya.

  6. Pada halaman Namespace Hub Acara, pilih Acara di menu sebelah kiri, lalu pilih + Langganan Acara pada toolbar.

    Tambahkan tautan langganan acara di halaman Acara untuk namespace Hub Acara

  7. Di halaman Membuat Langganan acara, ikuti langkah berikut:

    1. Masukkan nama untuk langganan acara.

    2. Masukkan nama untuk topik sistem. Topik sistem menyediakan titik akhir bagi pengirim untuk mengirim acara. Untuk informasi selengkapnya, lihat Topik sistem.

    3. Untuk Jenis Titik Akhir, Pilih Azure Function.

    4. Untuk Titik akhir, pilih tautan.

    5. Pada halaman Pilih Azure Function, ikuti langkah-langkah ini jika tidak diisi secara otomatis.

      1. Pilih langganan Azure yang memiliki fungsi Azure.
      2. Pilih grup sumber daya untuk fungsi tersebut.
      3. Pilih aplikasi fungsi.
      4. Pilih slot penyebaran.
      5. Pilih fungsi EventGridTriggerMigrateData.
    6. Pada halaman Pilih Fungsi Azure, pilih Konfirmasi Pilihan.

    7. Lalu, kembali ke halaman Membuat Langganan Acara, pilih Buat.

      Membuat langganan acara menggunakan fungsi

  8. Pastikan langganan acara dibuat. Beralih ke tab Langganan Acara pada halaman Acara untuk namespace Hub Acara.

    Konfirmasikan langganan acara

  9. Pilih paket App Service (bukan App Service) dalam daftar sumber daya di grup sumber daya.

Jalankan aplikasi untuk menghasilkan data

Anda telah selesai menyiapkan hub acara, kumpulan SQL khusus (sebelumnya Gudang Data SQL), aplikasi fungsi Azure, dan langganan acara. Sebelum menjalankan aplikasi yang menghasilkan data untuk hub acara, Anda perlu mengonfigurasi beberapa nilai.

  1. Di portal Azure, navigasikan ke grup sumber daya Anda seperti yang Anda lakukan sebelumnya.

  2. Pilih namespacee Pusat Aktivitas Anda.

  3. Di halaman Namespace Pusat Aktivitas, pilih Kebijakan akses bersama di menu sebelah kiri.

  4. Pilih RootManageSharedAccessKey dalam daftar kebijakan.

    Halaman kebijakan akses bersama untuk namespace Pusat Aktivitas

  5. Pilih tombol salin di samping kotak teks Kunci string-utama koneksi.

  6. Kembali ke solusi Visual Studio Anda.

  7. Klik kanan proyek WindTurbineDataGenerator, dan pilih Atur sebagai Proyek startup.

  8. Dalam proyek WindTurbineDataGenerator, buka program.cs.

  9. Ganti <EVENT HUBS NAMESPACE CONNECTION STRING> dengan string koneksi yang Anda salin dari portal.

  10. Jika Anda telah menggunakan nama yang berbeda untuk hub peristiwa selain hubdatamigration, ganti <EVENT HUB NAME> dengan nama hub peristiwa.

    private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/...";
    private const string EventHubName = "hubdatamigration";
    
  11. Bangun solusinya. Jalankan aplikasi WindTurbineGenerator.exe.

  12. Setelah beberapa menit, di tab browser lain tempat Anda membuka jendela kueri, lakukan kueri tabel di gudang data Anda untuk data yang dimigrasikan.

    select * from [dbo].[Fact_WindTurbineMetrics]    
    

    Hasil kueri

Memantau solusi

Bagian ini membantu Anda memantau atau memecahkan masalah solusi.

Menampilkan data yang diambil di akun penyimpanan

  1. Navigasikan ke grup sumber daya dan pilih akun penyimpanan yang digunakan untuk mengambil data acara.

  2. Pada halaman Akun penyimpanan, pilih Penjelajah Penyimpanan (pratinjau) di menu sebelah kiri.

  3. Perluas KONTAINER BLOB, dan pilih windturbinecapture.

  4. Buka folder yang diberi nama sama dengan namespace Hub Acara Anda di panel kanan.

  5. Buka folder bernama sama dengan hub acara Anda (hubdatamigration).

  6. Telusuri folder secara detail dan Anda melihat file AVRO. Berikut contohnya:

    File yang diambil di penyimpanan

Pastikan pemicu Event Grid memanggil fungsi

  1. Navigasikan ke grup sumber daya dan pilih aplikasi fungsi.

  2. Pilih Functions di menu sebelah kiri.

  3. Pilih fungsi EventGridTriggerMigrateData dari daftar.

  4. Pada halaman Function, pilih Monitor di menu sebelah kiri.

  5. Pilih Konfigurasikan untuk mengonfigurasi application insights untuk mencatat log invokasi.

  6. Buat sumber daya Application Insights baru atau gunakan sumber daya yang ada.

  7. Navigasikan kembali ke halaman Monitor untuk fungsi tersebut.

  8. Pastikan aplikasi klien(WindTurbineDataGenerator)yang mengirimkan acara masih berjalan. Jika tidak, jalankan aplikasi.

  9. Tunggu beberapa menit (5 menit atau lebih) dan pilih tombol Refresh untuk melihat pemanggilan fungsi.

    Pemanggilan fungsi

  10. Pilih pemanggilan untuk melihat detail.

    Event Grid mendistribusikan data acara kepada pelanggan. Contoh berikut menunjukkan data acara yang dihasilkan saat streaming data melalui hub pacara diambil dalam blob. Secara khusus, perhatikan fileUrlproperti dalam data objek yang menunjuk ke blob di penyimpanan. Aplikasi fungsi menggunakan URL ini untuk mengambil file blob dengan data yang diambil.

    {
    	"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"
    }
    

Pastikan data disimpan di kumpulan SQL khusus

Di tab browser tempat Anda membuka jendela kueri, lakukan kueri tabel di kumpulan SQL khusus Anda untuk data yang dimigrasikan.

Hasil kueri

Langkah berikutnya