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 należy utworzyć centrum zdarzeń w witrynie Azure Portal. Następnie utwórz tabelę docelową w usłudze Azure Data Explorer, w której dane w określonym formacie są pozyskiwane przy użyciu podanych właściwości pozyskiwania. Połączenie usługi Event Hubs musi mieć świadomość routingu 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.
Opcje uwierzytelniania połączenia danych usługi 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:
- Dodaj tożsamość zarządzaną do klastra.
- 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.
- Ustaw zasady tożsamości zarządzanej w docelowych bazach danych.
- 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. - Kompresja danych nie jest obsługiwana w formatach binarnych (Avro, ApacheAvro, Parquet, ORC i W3CLOGFILE).
- Niestandardowe kodowanie i właściwości systemu osadzonego nie są obsługiwane w formatach binarnych i skompresowanych danych.
- W przypadku korzystania z formatów binarnych (Avro, ApacheAvro, Parquet, ORC i W3CLOGFILE) i mapowań pozyskiwania, kolejność pól w definicji mapowania pozyskiwania musi być zgodna z kolejnością odpowiednich kolumn w tabeli.
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 . |
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, chyba że zostanie podana niestandardowa data rozpoczęcia pobierania. W każdym razie okres wyszukiwania nie może przekroczyć rzeczywistego okresu przechowywania centrum zdarzeń.
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ć alternatywne opcje routingu i przetwarzania danych, ustawiając co najmniej jedną właściwości danych zdarzenia wymienioną w poprzednim akapicie.
Uwaga
Połączenie danych usługi Event Hubs podejmie próbę przetworzenia wszystkich zdarzeń odczytanych z centrum zdarzeń, a każde zdarzenie, którego nie może przetworzyć z jakiegokolwiek powodu, zostanie zgłoszone jako niepowodzenie pozyskiwania. Przeczytaj, jak monitorować pozyskiwanie w usłudze Azure Data Explorer tutaj.
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. Tę funkcję można włączyć w witrynie Azure Portal w witrynie Azure Portal przy użyciu zestawów SDK zarządzania w języku C# lub Python albo szablonu 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 usługi Event Hubs
Właściwości systemu to pola ustawiane przez usługę Event Hubs, gdy zdarzenie jest w kolejce. Połączenie danych usługi Azuer Data Explorer Event Hubs może osadzić wstępnie zdefiniowany zestaw właściwości systemowych do 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
, ,PSV
MultiJSON
TSV
SCsv
CSV
, ).TSVE
SOHsv
- W przypadku korzystania z nieobsługiwanego formatu (i.e. TXT lub skompresowanych formatów, takich jak
Parquet
itpAvro
.), 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 (TimeStamp
, MetricName
, 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, MetricName: 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" : "TimeStamp", "Properties":{"Ordinal":"2"}},'
' { "column" : "MetricName", "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" : "TimeStamp", "Properties":{"Path":"$.TimeStamp"}},'
' { "column" : "MetricName", "Properties":{"Path":"$.MetricName"}},'
' { "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ć więcej informacji 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:
- Zamapuj
Body
pole przechwyconego zdarzenia na kolumnę typudynamic
w tabeli docelowej. - 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.
Tworzenie centrów 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.
Połączenie danych usługi Event Hubs między regionami
Aby uzyskać najlepszą wydajność, utwórz centrum zdarzeń w tym samym regionie co klaster. Jeśli nie jest to możliwe, rozważ użycie warstw Premium lub Dedicated Event Hubs. Aby zapoznać się z porównaniem warstw, zobacz Porównanie warstw usługi Azure Event Hubs.
Wysyłanie zdarzeń
Zobacz przykładową aplikację , która generuje dane i wysyła je do centrum zdarzeń.
Uwaga
Aby umożliwić wydajne przetwarzanie zdarzeń z usługi Event Hubs do usługi Azure Data Explorer, unikaj niezrównoważonego rozkładu zdarzeń między partycjami. Nierówne mapowanie może spowodować duże opóźnienie odnajdywania. Aby uzyskać więcej informacji, zobacz Mapowanie zdarzeń na partycje.
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 nasłuchuje obu połączeń centrum zdarzeń.
Uwaga
Użytkownik jest odpowiedzialny za zaimplementowanie trybu failover z podstawowej przestrzeni nazw do pomocniczej przestrzeni nazw.
Powiązana zawartość
- Pozyskiwanie danych z centrum zdarzeń do usługi Azure Data Explorer
- Tworzenie połączenia danych centrum zdarzeń dla usługi Azure Data Explorer przy użyciu języka C#
- Tworzenie połączenia danych centrum zdarzeń dla usługi Azure Data Explorer przy użyciu języka Python
- Tworzenie połączenia danych centrum zdarzeń dla usługi Azure Data Explorer przy użyciu szablonu usługi Azure Resource Manager
- Zarządzanie połączeniami danych usługi Event Hubs w bezpłatnym klastrze
- Pozyskiwanie i wykonywanie zapytań dotyczących dzienników usługi Azure Monitor za pomocą usługi Azure Data Explorer