Bagikan melalui


Tutorial: Memigrasikan data yang diambil Azure Event Hubs dari Azure Storage ke Azure Synapse Analytics menggunakan Azure Event Grid dan Azure Functions

Dalam tutorial ini, Anda akan memigrasikan data yang diambil Azure Event Hubs dari Azure Blob Storage ke Azure Synapse Analytics, khususnya kumpulan SQL khusus, menggunakan Azure Event Grid dan Azure Functions.

Ringkasan 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 pengambilan data selesai, sebuah acara telah terlaksana dan dikirim ke Azure 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
  • Buat 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:

  • Artikel ini mengasumsikan bahwa Anda terbiasa dengan Event Grid dan Event Hubs (terutama fitur Capture). Jika Anda tidak terbiasa dengan Azure Event Grid, lihat Pengantar Azure Event Grid. Untuk mempelajari tentang fitur Tangkap Azure Event Hubs, lihat Menangkap peristiwa melalui Azure Event Hubs di Azure Blob Storage atau Azure Data Lake Storage.
  • 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 mengirim sampel data turbin angin ke pusat aktivitas dengan fitur Capture diaktifkan.
    • FunctionDWDumper – Fungsi Azure yang menerima pemberitahuan dari 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).

Memantau 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.

      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 dapat menyalin/menempelkan ke editor pilihan Anda, mengatur nilai, lalu menyalin perintah ke Cloud Shell. Jika Anda melihat kesalahan karena nama sumber daya Azure, hapus grup sumber daya, perbaiki nama, dan coba lagi perintah tersebut.

      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 karena Anda membuat banyak sumber daya. 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 Daftar <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 tab Impor profil, pilih file pengaturan penerbitan yang Anda simpan sebelumnya di folder FunctionEGDWDumper lalu pilih Selesai.

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

  8. Di browser web yang membuka halaman Fungsi Azure , pilih Fungsi di panel tengah. 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, masuk 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.

    Cuplikan layar halaman Peristiwa untuk namespace Layanan Pusat Aktivitas dengan tautan Tambahkan langganan peristiwa dipilih.

  7. Di halaman Membuat Langganan Peristiwa, 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.

      Cuplikan layar halaman Buat langganan peristiwa.

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

    Cuplikan layar memperlihatkan tab Langganan Peristiwa di halaman Peristiwa.

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.

    Cuplikan layar memperlihatkan halaman Kebijakan akses bersama untuk namespace layanan Azure Event Hubs.

  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]
    

    Cuplikan layar memperlihatkan hasil kueri.

Penting

Kami menggunakan string koneksi untuk mengautentikasi ke namespace Azure Event Hubs agar tutorial tetap sederhana. Kami menyarankan agar Anda menggunakan autentikasi ID Microsoft Entra di lingkungan produksi. Saat menggunakan aplikasi, Anda dapat mengaktifkan identitas terkelola untuk aplikasi dan menetapkan identitas peran yang sesuai (Pemilik Azure Event Hubs, Pengirim Data Azure Event Hubs, atau Penerima Data Azure Event Hubs) di namespace Layanan Azure Event Hubs. Untuk informasi selengkapnya, lihat Mengotorisasi akses ke Azure Event Hubs menggunakan ID Microsoft Entra.

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 Browser penyimpanan 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:

    Cuplikan layar memperlihatkan file yang diambil di penyimpanan.

Pastikan pemicu Event Grid memanggil fungsi

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

  2. Pilih tab Fungsi di panel tengah.

  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.

    Cuplikan layar memperlihatkan 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.

Cuplikan layar memperlihatkan hasil kueri akhir.

Langkah berikutnya