Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku przeprowadzisz migrację przechwyconych danych z usługi Event Hubs z usługi Azure Blob Storage do usługi Azure Synapse Analytics. Przenosisz dane do dedykowanej puli SQL z użyciem usług Azure Event Grid i Azure Functions.
Ten diagram przedstawia przepływ pracy rozwiązania, które tworzysz w ramach tego samouczka:
- Dane wysłane do centrum zdarzeń platformy Azure są przechwytywane w magazynie obiektów blob Azure.
- Po zakończeniu przechwytywania danych zdarzenie jest generowane i wysyłane do usługi Azure Event Grid.
- Usługa Azure Event Grid przekazuje te dane zdarzeń do aplikacji funkcji platformy Azure.
- Aplikacja funkcji pobiera obiekt blob z magazynu, używając adresu URL obiektu blob.
- Aplikacja funkcji migruje dane obiektu blob do usługi Azure Synapse Analytics.
W tym artykule wykonasz następujące kroki:
- Wdrażanie wymaganej infrastruktury na potrzeby samouczka
- Publikowanie kodu do aplikacji usługi Functions
- Tworzenie subskrypcji usługi Event Grid
- Przesyłanie strumieniowe przykładowych danych do usługi Event Hubs
- Weryfikowanie przechwyconych danych w usłudze Azure Synapse Analytics
Wymagania wstępne
Znajomość usług Azure Event Grid i Azure Event Hubs, zwłaszcza funkcji przechwytywania. Jeśli nie znasz usługi Azure Event Grid, zobacz Wprowadzenie do usługi Azure Event Grid. Aby dowiedzieć się więcej o funkcji przechwytywania usługi Azure Event Hubs, zobacz Przechwytywanie zdarzeń za pośrednictwem usługi Azure Event Hubs w usłudze Azure Blob Storage lub Azure Data Lake Storage.
Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Program Visual Studio z obciążeniami do tworzenia aplikacji klasycznych .NET, programowania na platformie Azure, tworzenia ASP.NET i tworzenia aplikacji internetowych, tworzenia Node.js i programowania w języku Python.
Przykładowy projekt EventHubsCaptureEventGridDemo. Przykład obejmuje:
- WindTurbineDataGenerator. Prosty wydawca, który wysyła przykładowe dane turbiny wiatrowej do centrum zdarzeń z włączoną funkcją przechwytywania.
- FunctionDWDumper. Funkcja platformy Azure, która odbiera powiadomienie z usługi Azure Event Grid po przechwyceniu pliku Avro do obiektu blob usługi Azure Storage. Odbiera identyfikator URI obiektu blob, odczytuje jego zawartość i wypycha te dane do usługi Azure Synapse Analytics.
Wdrażanie infrastruktury
W tej sekcji wdróż wymaganą infrastrukturę przy użyciu szablonu usługi Resource Manager. Podczas wdrażania szablonu tworzone są następujące zasoby:
- Centrum zdarzeń z włączoną funkcją Capture
- Konto magazynowe dla przechwyconych plików
- Plan usługi aplikacji do hostowania aplikacji funkcji
- Aplikacja funkcji do przetwarzania zdarzeń
- Rozwiązanie SQL Server do hostowania magazynu danych
- Usługa Azure Synapse Analytics (dedykowana pula SQL) do przechowywania migrowanych danych
Wdrażanie infrastruktury przy użyciu interfejsu wiersza polecenia platformy Azure
Zaloguj się w witrynie Azure Portal.
Wybierz przycisk Cloud Shell u góry.
W dolnej części przeglądarki zostanie otwarta usługa Cloud Shell.
Cloud Shell oferuje wersje powłoki Bash i programu PowerShell. Przełączaj się między opcjami przy użyciu przycisku w górnej części obszaru terminalu. Jeśli usługa Cloud Shell została otwarta jako PowerShell, wybierz pozycję Bash.
Utwórz grupę zasobów platformy Azure, uruchamiając następujące polecenie interfejsu wiersza polecenia:
Skopiuj poniższe polecenie i wklej je w oknie usługi Cloud Shell. Zmień nazwę i lokalizację grupy zasobów, jeśli chcesz.
az group create --name rgDataMigration --location eastusNaciśnij Enter.
Oto przykład:
user@Azure:~$ az group create --name rgDataMigration --location eastus { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rgDataMigration", "location": "eastus", "managedBy": null, "name": "rgDataMigration", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": "Microsoft.Resources/resourceGroups" }
Wdróż wszystkie zasoby wymienione w poprzedniej sekcji, uruchamiając następujące polecenie interfejsu wiersza polecenia. Zasoby obejmują Centrum Zdarzeń, Konto magazynu, Function App i usługę Azure Synapse Analytics.
Skopiuj polecenie i wklej je w oknie usługi Cloud Shell. Alternatywnie możesz skopiować do edytora tekstów, ustawić wartości, a następnie skopiować polecenie do usługi Cloud Shell. Jeśli wystąpi błąd spowodowany nazwą zasobu platformy Azure, usuń grupę zasobów, popraw nazwę i ponów próbę wykonania polecenia.
Ważne
Przed uruchomieniem polecenia określ wartości dla następujących jednostek:
- Nazwa utworzonej wcześniej grupy zasobów.
- Nazwa przestrzeni nazw centrum zdarzeń.
- Nazwa centrum zdarzeń. Możesz pozostawić wartość bez zmian (hubdatamigration).
- Nazwa serwera SQL.
- Nazwa użytkownika i hasło SQL.
- Nazwa bazy danych.
- Nazwa konta magazynu
- Nazwa aplikacji funkcji.
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>Naciśnij Enter w oknie usługi Cloud Shell, aby uruchomić polecenie. Ten proces może zająć trochę czasu, ponieważ tworzysz kilka zasobów. W wyniku polecenia upewnij się, że nie ma żadnych błędów.
Zamknij usługę Cloud Shell, wybierając przycisk Cloud Shell w portalu lub przycisk X w prawym górnym rogu okna usługi Cloud Shell.
Sprawdzanie, czy są tworzone zasoby
W witrynie Azure Portal w polu wyszukiwania wprowadź ciąg Grupy zasobów. W wynikach wybierz pozycję Grupy zasobów.
W razie potrzeby w polu wyszukiwania wprowadź nazwę grupy zasobów, aby filtrować grupy zasobów.
Wybierz grupę zasobów na liście.
Sprawdź, czy w grupie zasobów są wyświetlane następujące zasoby:
Tworzenie tabeli w usłudze Azure Synapse Analytics
W tej sekcji utworzysz tabelę w dedykowanej puli SQL utworzonej wcześniej.
Na liście zasobów w grupie zasobów wybierz dedykowaną pulę SQL.
Na stronie Dedykowana pula SQL w obszarze Typowe zadania wybierz pozycję Edytor zapytań (wersja zapoznawcza).
Wprowadź nazwę użytkownika i hasło dla serwera SQL, a następnie wybierz przycisk OK. Jeśli zostanie wyświetlony komunikat informujący o umożliwieniu klientowi dostępu do serwera SQL, wybierz pozycję Zezwalaj na adres IP<>na serwerze <programu SQL Server>, a następnie wybierz przycisk OK.
W oknie zapytania skopiuj i uruchom następujący skrypt SQL:
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);Nie zamykaj tej karty lub okna, aby na końcu tego samouczka można było sprawdzić, czy dane zostały utworzone.
Publikowanie aplikacji usługi Azure Functions
Najpierw pobierz profil publikowania aplikacji Usługi Functions z witryny Azure Portal. Następnie użyj profilu publikowania, aby opublikować projekt lub aplikację usługi Azure Functions z poziomu programu Visual Studio.
Pobieranie profilu publikowania
Na stronie Grupa zasobów wybierz aplikację usługi Azure Functions.
Na stronie Aplikacja funkcji wybierz Pobierz profil publikowania.
Pobierz i zapisz plik w podfolderze FunctionEGDDumper folderu EventHubsCaptureEventGridDemo.
Publikowanie profilu publikowania w celu opublikowania aplikacji usługi Functions
Uruchom program Visual Studio.
Otwórz rozwiązanie EventHubsCaptureEventGridDemo.sln, które zostało pobrane z repozytorium GitHub w ramach wymagań wstępnych. Można go znaleźć w folderze
/samples/e2e/EventHubsCaptureEventGridDemo.W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt FunctionEGDWDumper, a następnie wybierz pozycję Publikuj.
Na poniższym ekranie wybierz pozycję Uruchom lub Dodaj profil publikowania.
W oknie dialogowym Publikowanie wybierz pozycję Importuj profil dla pozycji Cel, a następnie wybierz przycisk Dalej.
Na karcie Importowanie profilu wybierz plik ustawień publikowania zapisany wcześniej w folderze FunctionEGDWDumper . Następnie wybierz pozycję Zakończ.
Gdy program Visual Studio skonfiguruje profil, wybierz pozycję Publikuj. Upewnij się, że publikowanie zakończyło się pomyślnie.
W przeglądarce internetowej z otwartą stroną funkcji platformy Azure wybierz pozycję Funkcje w środkowym okienku. Upewnij się, że na liście jest wyświetlana funkcja EventGridTriggerMigrateData . Jeśli go nie widzisz, spróbuj opublikować go ponownie w programie Visual Studio, a następnie odśwież stronę w portalu.
Po opublikowaniu funkcji możesz przystąpić do subskrybowania zdarzenia.
Subskrybowanie zdarzenia
W nowej karcie lub nowym oknie przeglądarki internetowej zaloguj się do witryny Azure Portal.
W witrynie Azure Portal wyszukaj i wybierz pozycję Grupy zasobów.
W razie potrzeby w polu wyszukiwania wprowadź nazwę grupy zasobów, aby filtrować grupy zasobów.
Wybierz grupę zasobów na liście.
Wybierz przestrzeń nazw usługi Event Hubs z listy zasobów.
Na stronie Przestrzeń nazw usługi Event Hubs wybierz pozycję Zdarzenia, a następnie wybierz pozycję + Subskrypcja zdarzeń na pasku narzędzi.
Na stronie Tworzenie subskrypcji zdarzeń wykonaj następujące kroki:
Wprowadź nazwę subskrypcji zdarzeń.
Wprowadź nazwę tematu systemowego. Temat systemowy zawiera punkt końcowy nadawcy do wysyłania zdarzeń. Aby uzyskać więcej informacji, zobacz Tematy systemowe.
W polu Typ punktu końcowego wybierz pozycję Funkcja platformy Azure.
W polu Punkt końcowy wybierz link.
Na stronie Wybieranie funkcji platformy Azure wykonaj następujące kroki, jeśli nie zostaną wypełnione automatycznie.
- Wybierz subskrypcję platformy Azure z funkcją platformy Azure.
- Wybierz grupę zasobów dla funkcji.
- Wybierz aplikację funkcji.
- Wybierz miejsce wdrożenia.
- Wybierz funkcję EventGridTriggerMigrateData.
Na stronie Wybieranie funkcji platformy Azure wybierz pozycję Potwierdź wybór.
Następnie ponownie na stronie Tworzenie subskrypcji zdarzeń wybierz pozycję Utwórz.
Sprawdź, czy subskrypcja zdarzeń została utworzona. Przejdź do karty Subskrypcje zdarzeń na stronie Zdarzenia dla przestrzeni nazw usługi Event Hubs.
Uruchamianie aplikacji w celu wygenerowania danych
Zakończono konfigurowanie centrum zdarzeń, dedykowanej puli SQL (dawniej SQL Data Warehouse), aplikacji funkcji Azure i subskrypcji zdarzeń. Przed uruchomieniem aplikacji, która generuje dane dla centrum zdarzeń, skonfiguruj kilka wartości.
W witrynie Azure Portal jak poprzednio przejdź do grupy zasobów.
Wybierz przestrzeń nazw usługi Event Hubs.
Na stronie Przestrzeń nazw usługi Event Hubs wybierz pozycję Zasady dostępu współdzielonego.
Z listy zasad wybierz pozycję RootManageSharedAccessKey.
Wybierz przycisk kopiowania obok pozycji Podstawowe parametry połączenia.
Wróć do rozwiązania programu Visual Studio.
Kliknij prawym przyciskiem myszy projekt WindTurbineDataGenerator i wybierz polecenie Ustaw jako projekt startowy.
W projekcie WindTurbineDataGenerator otwórz plik program.cs.
Zastąp ciąg
<EVENT HUBS NAMESPACE CONNECTION STRING>parametry połączenia skopiowanymi z portalu.Jeśli użyłeś innej nazwy dla centrum zdarzeń niż
hubdatamigration, zastąp<EVENT HUB NAME>nazwą tego centrum zdarzeń.private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/..."; private const string EventHubName = "hubdatamigration";Stwórz rozwiązanie. Uruchom aplikację WindTurbineGenerator.exe.
Po kilku minutach na drugiej karcie przeglądarki, na której jest otwarte okno zapytania, wykonaj zapytanie dotyczące tabeli w magazynie danych dla zmigrowanych danych.
select * from [dbo].[Fact_WindTurbineMetrics]
Ważne
W tym przykładzie użycie parametrów połączenia do uwierzytelniania w przestrzeni nazw usługi Azure Event Hubs sprawia, że samouczek jest prosty. Zalecamy używanie uwierzytelniania microsoft Entra ID w środowiskach produkcyjnych. W przypadku korzystania z aplikacji włącz tożsamość zarządzaną dla aplikacji i przypisz tożsamość odpowiednią rolę (właściciel usługi Azure Event Hubs, nadawca danych usługi Azure Event Hubs lub odbiornik danych usługi Azure Event Hubs) w przestrzeni nazw usługi Event Hubs. Aby uzyskać więcej informacji, zobacz Autoryzowanie dostępu do usługi Event Hubs przy użyciu identyfikatora Entra firmy Microsoft.
Monitorowanie rozwiązania
Ta sekcja ułatwia monitorowanie rozwiązania lub rozwiązywanie problemów z tym rozwiązaniem.
Wyświetlanie przechwyconych danych na koncie magazynu
Przejdź do grupy zasobów i wybierz konto magazynu używane do przechwytywania danych zdarzeń.
Na stronie Konto magazynowe wybierz pozycję Przeglądarka magazynu.
Rozwiń węzeł KONTENERY OBIEKTÓW BLOB i wybierz pozycję windturbinecapture.
Otwórz folder o takiej samej nazwie jak przestrzeń nazw usługi Event Hubs w okienku po prawej stronie.
Otwórz folder o takiej samej nazwie jak centrum zdarzeń (hubdatamigration).
Przejdź do szczegółów folderów i zobaczysz pliki AVRO. Oto przykład:
Sprawdź, czy wyzwalacz usługi Event Grid wywołał funkcję
Przejdź do grupy zasobów i wybierz aplikację funkcji.
Wybierz kartę Funkcje w środkowym okienku.
Wybierz z listy funkcję EventGridTriggerMigrateData .
Na stronie Funkcja wybierz pozycję Monitor w menu po lewej stronie.
Wybierz pozycję Konfiguruj , aby skonfigurować usługę Application Insights w celu przechwytywania dzienników wywołań.
Utwórz nowy zasób usługi Application Insights lub użyj istniejącego zasobu.
Wróć do strony Monitorowanie dla funkcji.
Upewnij się, że aplikacja kliencka (WindTurbineDataGenerator), która wysyła zdarzenia, jest nadal uruchomiona. Jeśli nie, uruchom aplikację.
Poczekaj kilka minut (co najmniej 5 minut) i wybierz przycisk Odśwież , aby wyświetlić wywołania funkcji.
Aby wyświetlić szczegóły, wybierz wywołanie.
Usługa Event Grid dystrybuuje dane zdarzenia do subskrybentów. Poniższy przykład przedstawia dane zdarzeń wygenerowane po przechwyceniu w obiekcie blob danych przesyłanych strumieniowo za pośrednictwem centrum zdarzeń. W szczególności zwróć uwagę, że właściwość
fileUrlw obiekciedatawskazuje obiekt blob w magazynie. Aplikacja funkcji używa tego adresu URL do pobierania pliku obiektu blob zawierającego przechwycone dane.{ "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" }
Sprawdź, czy dane są przechowywane w dedykowanej puli SQL
Na karcie przeglądarki, na której jest otwarte okno zapytania, wykonaj zapytanie dotyczące tabeli w dedykowanej puli SQL dla zmigrowanych danych.
Treści powiązane
- Aby uzyskać więcej informacji na temat konfigurowania i uruchamiania przykładu, zobacz Przykład funkcji Event Hubs Capture i usługi Event Grid.
- W tym samouczku utworzono subskrypcję zdarzeń dla
CaptureFileCreatedzdarzenia. Aby uzyskać więcej informacji na temat tego zdarzenia i wszystkich zdarzeń obsługiwanych przez usługę Azure Blob Storage, zobacz Azure Event Hubs jako źródło usługi Event Grid. - Aby dowiedzieć się więcej na temat funkcji przechwytywania usługi Event Hubs, zobacz Przechwytywanie zdarzeń za pośrednictwem usługi Azure Event Hubs w usłudze Azure Blob Storage lub Azure Data Lake Storage.