Udostępnij za pośrednictwem


Połączenie danych usługi Azure Event Hubs

Azure Event Hubs to platforma przesyłania strumieniowego danych big data i usługa pozyskiwania zdarzeń. Usługa Azure Data Explorer oferuje ciągłe pozyskiwanie z usługi Event Hubs zarządzanej przez klienta.

Potok pozyskiwania usługi Event Hubs przesyła zdarzenia do usługi Azure Data Explorer w kilku krokach. Najpierw utworzysz centrum zdarzeń w witrynie Azure Portal. Następnie utworzysz tabelę docelową w usłudze Azure Data Explorer, w której dane w określonym formacie zostaną pozyskane przy użyciu podanych właściwości pozyskiwania. Połączenie usługi Event Hubs musi znać routing zdarzeń. Dane mogą być osadzone z wybranymi właściwościami zgodnie z właściwościami systemu zdarzeń. Utwórz połączenie z usługą Event Hubs, aby utworzyć centrum zdarzeń i wysłać zdarzenia. Ten proces można zarządzać za pośrednictwem witryny Azure Portal, programowo za pomocą języka C# lub Python albo szablonu usługi Azure Resource Manager.

Aby uzyskać ogólne informacje na temat pozyskiwania danych w usłudze Azure Data Explorer, zobacz Omówienie pozyskiwania danych w usłudze Azure Data Explorer.

Mechanizmy uwierzytelniania połączeń danych w usłudze Azure Data Explorer

  • Połączenie danych oparte na tożsamości zarządzanej (zalecane): użycie połączenia danych opartego na tożsamości zarządzanej jest najbezpieczniejszym sposobem nawiązywania połączenia ze źródłami danych. Zapewnia pełną kontrolę nad możliwością pobierania danych ze źródła danych. Konfiguracja połączenia danych przy użyciu tożsamości zarządzanej wymaga wykonania następujących kroków:

    1. Dodaj tożsamość zarządzaną do klastra.
    2. Udziel uprawnień tożsamości zarządzanej w źródle danych. Aby pobrać dane z usługi Azure Event Hubs, tożsamość zarządzana musi mieć uprawnienia odbiornika danych usługi Azure Event Hubs.
    3. Ustaw zasady tożsamości zarządzanej w docelowych bazach danych.
    4. Utwórz połączenie danych przy użyciu uwierzytelniania tożsamości zarządzanej w celu pobrania danych.

    Uwaga

    Jeśli uprawnienia tożsamości zarządzanej zostaną usunięte ze źródła danych, połączenie danych nie będzie już działać i nie będzie mogło pobrać danych ze źródła danych.

  • Połączenie danych oparte na kluczach: jeśli uwierzytelnianie tożsamości zarządzanej nie zostanie określone dla połączenia danych, połączenie automatycznie domyślnie zostanie nawiązane z uwierzytelnianiem opartym na kluczach. Połączenia oparte na kluczach pobierają dane przy użyciu parametry połączenia zasobów, takich jak parametry połączenia usługi Azure Event Hubs. Usługa Azure Data Explorer pobiera zasób parametry połączenia dla określonego zasobu i bezpiecznie je zapisuje. Następnie parametry połączenia służy do pobierania danych ze źródła danych.

    Uwaga

    Jeśli klucz zostanie obrócony, połączenie danych nie będzie już działać i nie będzie mogło pobrać danych ze źródła danych. Aby rozwiązać ten problem, zaktualizuj lub ponownie utwórz połączenie danych.

Format danych

  • Dane są odczytywane z centrum zdarzeń w postaci obiektów EventData .

  • Zobacz obsługiwane formaty.

    Uwaga

    • Pozyskiwanie z usługi Event Hubs nie obsługuje formatu RAW.
    • Rejestr schematów usługi Azure Event Hubs i bez schematu Avro nie są obsługiwane.
  • Dane można kompresować przy użyciu algorytmu GZip kompresji. Możesz określić Compression dynamicznie przy użyciu właściwości pozyskiwania lub w ustawieniach statycznego połączenia danych.

    Uwaga

    Kompresja danych nie jest obsługiwana w przypadku skompresowanych formatów (Avro, Parquet, ORC, ApacheAvro i W3CLOGFILE). Niestandardowe kodowanie i właściwości systemu osadzonego nie są obsługiwane w przypadku skompresowanych danych.

Właściwości usługi Event Hubs

Usługa Azure Data Explorer obsługuje następujące właściwości usługi Event Hubs:

  • Zamknięty zestaw właściwości pozyskiwania, który pomaga kierować zdarzenie do odpowiedniej tabeli.
  • Zamknięty zestaw właściwości systemu zdarzeń, które można osadzać w danych na podstawie danego mapowania.

Uwaga

Pozyskiwanie właściwości niestandardowych usługi Event Hubs używanych do kojarzenia metadanych ze zdarzeniami nie jest obsługiwane. Jeśli musisz pozyskać właściwości niestandardowe, wyślij je w treści danych zdarzenia. Aby uzyskać więcej informacji, zobacz Pozyskiwanie właściwości niestandardowych.

Właściwości pozyskiwania

Właściwości pozyskiwania intruują proces pozyskiwania, gdzie kierować dane i jak je przetwarzać. Właściwości pozyskiwania zdarzeń można określić przy użyciu właściwości EventData.Properties. Można ustawić następujące właściwości:

Uwaga

W nazwach właściwości jest rozróżniana wielkość liter.

Właściwości opis
baza danych W nazwie docelowej bazy danych uwzględniana jest wielkość liter. Domyślnie dane są pozyskiwane do docelowej bazy danych skojarzonej z połączeniem danych. Użyj tej właściwości, aby zastąpić domyślną bazę danych i wysłać dane do innej bazy danych. W tym celu należy najpierw skonfigurować połączenie jako połączenie z wieloma bazami danych.
Table W nazwie istniejącej tabeli docelowej jest uwzględniana wielkość liter. Table Zastępuje zestaw w okienkuData Connection.
Formatuj Format danych. Data format Zastępuje zestaw w okienkuData Connection.
IngestionMappingReference Nazwa istniejącego mapowania pozyskiwania do użycia. Column mapping Zastępuje zestaw w okienkuData Connection.
Kompresja Kompresja danych, None (wartość domyślna) lub GZip kompresja.
Kodowanie Kodowanie danych, wartość domyślna to UTF8. Może być dowolnym z obsługiwanych kodowań platformy .NET.
Tagi Lista tagów do skojarzenia z pozyskanymi danymi sformatowana jako ciąg tablicy JSON. W przypadku używania tagów występują konsekwencje dotyczące wydajności.
Nieprzetworzone głowice Wskazuje, że źródłem zdarzeń jest platforma Kafka, a usługa Azure Data Explorer musi używać deserializacji tablicy bajtowej, aby odczytać inne właściwości routingu. Wartość jest ignorowana.

Uwaga

Tylko zdarzenia umieszczone w kolejce po utworzeniu połączenia danych są pozyskiwane.

Routing zdarzeń

Podczas tworzenia połączenia danych z klastrem można określić routing dla miejsca wysyłania pozyskanych danych. Domyślnym routingiem jest tabela docelowa określona w parametry połączenia, która jest skojarzona z docelową bazą danych. Domyślny routing danych jest również określany jako routing statyczny. Możesz określić alternatywny routing dla danych, ustawiając właściwości danych zdarzeń wymienionych powyżej.

Kierowanie danych zdarzeń do alternatywnej bazy danych

Routing danych do alternatywnej bazy danych jest domyślnie wyłączony. Aby wysłać dane do innej bazy danych, należy najpierw ustawić połączenie jako połączenie z wieloma bazami danych. Można to zrobić w witrynie Azure Portal w witrynie Azure Portal, języku C#, języku Python lub szablonie usługi ARM. Użytkownik, grupa, jednostka usługi lub tożsamość zarządzana używana do zezwalania na routing bazy danych musi mieć co najmniej rolę współautora i uprawnienia do zapisu w klastrze.

Aby określić alternatywną bazę danych, ustaw właściwość Pozyskiwanie bazy danych.

Ostrzeżenie

Określenie alternatywnej bazy danych bez ustawienia połączenia jako połączenia danych z wieloma bazami danych spowoduje niepowodzenie pozyskiwania.

Kierowanie danych zdarzeń do tabeli alternatywnej

Aby określić tabelę alternatywną dla każdego zdarzenia, ustaw właściwości Tabela, Format, Kompresja i Mapowanie pozyskiwania. Połączenie dynamicznie kieruje pozyskane dane, jak określono w obiekcie EventData.Properties, przesłaniając właściwości statyczne dla tego zdarzenia.

W poniższym przykładzie pokazano, jak ustawić szczegóły centrum zdarzeń i wysłać dane metryk pogody do alternatywnej bazy danych (MetricsDB) i tabeli (WeatherMetrics). Dane są w formacie JSON i mapowanie1 jest wstępnie zdefiniowane w tabeli WeatherMetrics.

// This sample uses Azure.Messaging.EventHubs which is a .Net Framework library.
await using var producerClient = new EventHubProducerClient("<eventHubConnectionString>");
// Create the event and add optional "dynamic routing" properties
var eventData = new EventData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(
    new { Timestamp = DateTime.UtcNow, MetricName = "Temperature", Value = 32 }
)));
eventData.Properties.Add("Database", "MetricsDB");
eventData.Properties.Add("Table", "WeatherMetrics");
eventData.Properties.Add("Format", "json");
eventData.Properties.Add("IngestionMappingReference", "mapping1");
eventData.Properties.Add("Tags", "['myDataTag']");
var events = new[] { eventData };
// Send events
await producerClient.SendAsync(events);

Mapowanie właściwości systemu zdarzeń

Właściwości systemu przechowują właściwości, które są ustawiane przez usługę Event Hubs, gdy zdarzenie jest w kolejce. Połączenie danych z centrum zdarzeń może osadzić wybrany zestaw właściwości systemowych w danych pozyskanych do tabeli na podstawie danego mapowania.

Uwaga

  • Właściwości systemu osadzania są obsługiwane w formatach json i tabelarycznych (np. JSON, , PSVMultiJSONTSVSCsvCSV, ). TSVESOHsv
  • W przypadku korzystania z nieobsługiwanego formatu (i.e. TXT lub skompresowanych formatów, takich jak Parquetitp Avro .), dane będą nadal pozyskiwane, ale właściwości zostaną zignorowane.
  • Osadzanie właściwości systemu nie jest obsługiwane, gdy jest ustawiona kompresja komunikatów centrum zdarzeń. W takich scenariuszach zostanie wyemitowany odpowiedni błąd, a dane nie zostaną pozyskane.
  • W przypadku danych tabelarycznych właściwości systemu są obsługiwane tylko w przypadku komunikatów zdarzeń z pojedynczym rekordem.
  • W przypadku danych json właściwości systemu są również obsługiwane w przypadku komunikatów o zdarzeniach z wieloma rekordami. W takich przypadkach właściwości systemu są dodawane tylko do pierwszego rekordu komunikatu zdarzenia.
  • W przypadku CSV mapowania właściwości są dodawane na początku rekordu w kolejności wymienionej w tworzeniu połączenia danych. Nie należy polegać na kolejności tych właściwości, ponieważ może to ulec zmianie w przyszłości.
  • W przypadku JSON mapowania właściwości są dodawane zgodnie z nazwami właściwości w tabeli Właściwości systemu.

Usługa Event Hubs uwidacznia następujące właściwości systemowe:

Właściwości Typ danych opis
x-opt-enqueued-time datetime Czas UTC, kiedy zdarzenie zostało w kolejce
x-opt-sequence-number long Numer sekwencji logicznej zdarzenia w strumieniu partycji centrum zdarzeń
przesunięcie x-opt-offset string Przesunięcie zdarzenia ze strumienia partycji centrum zdarzeń. Identyfikator przesunięcia jest unikatowy w ramach partycji strumienia centrum zdarzeń
x-opt-publisher string Nazwa wydawcy, jeśli wiadomość została wysłana do punktu końcowego wydawcy
x-opt-partition-key string Klucz partycji odpowiadającej partycji, która przechowywała zdarzenie

Podczas pracy z centrami zdarzeń usługi IoT Central można również osadzać właściwości systemu usługi IoT Hub w ładunku. Aby uzyskać pełną listę, zobacz Właściwości systemu usługi IoT Hub.

W przypadku wybrania właściwości systemu zdarzeń w sekcji Źródło danych tabeli należy uwzględnić właściwości w schemacie tabeli i mapowaniu.

Przykłady mapowania schematu

Przykład mapowania schematu tabeli

Jeśli dane zawierają trzy kolumny (Timespan, Metric, i Value) oraz właściwości, które zawierasz x-opt-enqueued-time , i x-opt-offset, utwórz lub zmień schemat tabeli przy użyciu tego polecenia:

    .create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)

Przykład mapowania woluminów CSV

Uruchom następujące polecenia, aby dodać dane na początku rekordu. Zanotuj wartości porządkowe.

    .create table TestTable ingestion csv mapping "CsvMapping1"
    '['
    '   { "column" : "Timespan", "Properties":{"Ordinal":"2"}},'
    '   { "column" : "Metric", "Properties":{"Ordinal":"3"}},'
    '   { "column" : "Value", "Properties":{"Ordinal":"4"}},'
    '   { "column" : "EventHubEnqueuedTime", "Properties":{"Ordinal":"0"}},'
    '   { "column" : "EventHubOffset", "Properties":{"Ordinal":"1"}}'
    ']'

Przykład mapowania JSON

Dane są dodawane przy użyciu mapowania właściwości systemowych. Uruchom te polecenia:

    .create table TestTable ingestion json mapping "JsonMapping1"
    '['
    '    { "column" : "Timespan", "Properties":{"Path":"$.timestamp"}},'
    '    { "column" : "Metric", "Properties":{"Path":"$.metric"}},'
    '    { "column" : "Value", "Properties":{"Path":"$.value"}},'
    '    { "column" : "EventHubEnqueuedTime", "Properties":{"Path":"$.x-opt-enqueued-time"}},'
    '    { "column" : "EventHubOffset", "Properties":{"Path":"$.x-opt-offset"}}'
    ']'

Mapowanie schematu dla plików Avro przechwytywania usługi Event Hubs

Jednym ze sposobów korzystania z danych usługi Event Hubs jest przechwytywanie zdarzeń za pośrednictwem usługi Azure Event Hubs w usłudze Azure Blob Storage lub Azure Data Lake Storage. Następnie można pozyskiwać pliki przechwytywania podczas ich zapisywania przy użyciu połączenia danych usługi Event Grid w usłudze Azure Data Explorer.

Schemat plików przechwytywania różni się od schematu oryginalnego zdarzenia wysyłanego do usługi Event Hubs. Należy zaprojektować schemat tabeli docelowej z tą różnicą. W szczególności ładunek zdarzenia jest reprezentowany w pliku przechwytywania jako tablica bajtów, a ta tablica nie jest automatycznie dekodowana przez połączenie danych usługi Azure Data Explorer usługi Event Grid. Aby uzyskać bardziej szczegółowe informacje na temat schematu plików dla danych przechwytywania usługi Event Hubs Avro, zobacz Eksplorowanie przechwyconych plików Avro w usłudze Azure Event Hubs.

Aby poprawnie zdekodować ładunek zdarzenia:

  1. Zamapuj Body pole przechwyconego zdarzenia na kolumnę typu dynamic w tabeli docelowej.
  2. Zastosuj zasady aktualizacji, które konwertują tablicę bajtów na ciąg czytelny przy użyciu funkcji unicode_codepoints_to_string().

Pozyskiwanie właściwości niestandardowych

Podczas pozyskiwania zdarzeń z usługi Event Hubs dane są pobierane z body sekcji obiektu danych zdarzenia. Jednak właściwości niestandardowe usługi Event Hubs są definiowane w properties sekcji obiektu i nie są pozyskiwane. Aby pozyskać właściwości klienta, należy je osadzić w danych w body sekcji obiektu.

Poniższy przykład porównuje obiekt danych zdarzeń zawierający właściwość customProperty niestandardową zdefiniowaną przez usługę Event Hubs (po lewej) z właściwością osadzoną wymaganą do pozyskiwania (po prawej).

{
"body":{
"value": 42
},
"properties":{
"customProperty": "123456789"
}
}
{
"body":{
"value": 42,
"customProperty": "123456789"
}
}

Możesz użyć jednej z następujących metod, aby osadzić właściwości niestandardowe w danych w body sekcji obiektu danych zdarzenia:

  • W usłudze Event Hubs podczas tworzenia obiektu danych zdarzenia osadź właściwości niestandardowe jako część danych w body sekcji obiektu.
  • Usługa Azure Stream Analytics umożliwia przetwarzanie zdarzeń z centrum zdarzeń i osadzanie właściwości niestandardowych w danych zdarzenia. Z usługi Azure Stream Analytics można pozyskiwać dane natywnie przy użyciu łącznika danych wyjściowych usługi Azure Data Explorer lub kierować dane do innego centrum zdarzeń i stamtąd do klastra.
  • Użyj usługi Azure Functions , aby dodać właściwości niestandardowe, a następnie pozyskać dane.

Połączenie danych usługi Event Hubs między regionami

Aby uzyskać najlepszą wydajność, utwórz wszystkie następujące zasoby w tym samym regionie co klaster. Jeśli nie ma innego rozwiązania, rozważ użycie warstw Premium lub Dedicated Event Hubs. Porównanie warstw usługi Event Hubs można znaleźć tutaj.

Tworzenie centrum zdarzeń

Jeśli jeszcze go nie masz, utwórz centrum zdarzeń. Nawiązywanie połączenia z centrum zdarzeń można zarządzać za pośrednictwem witryny Azure Portal, programowo za pomocą języka C# lub Python albo przy użyciu szablonu usługi Azure Resource Manager.

Uwaga

  • Możliwość dynamicznego dodawania partycji po utworzeniu centrum zdarzeń jest dostępna tylko w przypadku warstw Premium i Dedykowanych usługi Event Hubs. Rozważ długoterminową skalę podczas ustawiania liczby partycji.
  • Grupa konsumentów musi być unikatowa dla każdego konsumenta. Utwórz grupę odbiorców dedykowaną połączeniu usługi Azure Data Explorer.

Wysyłanie zdarzeń

Zobacz przykładową aplikację , która generuje dane i wysyła je do centrum zdarzeń.

Aby zapoznać się z przykładem generowania przykładowych danych, zobacz Pozyskiwanie danych z centrum zdarzeń do usługi Azure Data Explorer

Konfigurowanie rozwiązania do odzyskiwania po awarii geograficznej

Centrum zdarzeń oferuje rozwiązanie odzyskiwania po awarii geograficznej. Usługa Azure Data Explorer nie obsługuje Alias przestrzeni nazw centrum zdarzeń. Aby zaimplementować odzyskiwanie geograficzne po awarii w rozwiązaniu, utwórz dwa połączenia danych centrum zdarzeń: jedno dla podstawowej przestrzeni nazw i jedno dla pomocniczej przestrzeni nazw. Usługa Azure Data Explorer będzie nasłuchiwać obu połączeń centrum zdarzeń.

Uwaga

Użytkownik jest odpowiedzialny za zaimplementowanie trybu failover z podstawowej przestrzeni nazw do pomocniczej przestrzeni nazw.