Połączenie danych usługi Event Hubs (wersja zapoznawcza)
Azure Event Hubs to platforma przesyłania strumieniowego danych big data i usługa pozyskiwania zdarzeń. Usługa Azure Synapse 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 Synapse Data Explorer w kilku krokach. Najpierw utworzysz usługę Event Hubs w witrynie Azure Portal. Następnie utworzysz tabelę docelową w eksploratorze danych usługi Azure Synapse, w którym 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 są osadzone z wybranymi właściwościami zgodnie z mapowaniem właściwości systemu zdarzeń. Utwórz połączenie z usługą Event Hubs w celu utworzenia usługi Event Hubs i wysyłania zdarzeń. 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 Synapse Data Explorer, zobacz Omówienie pozyskiwania danych w usłudze Azure Synapse Data Explorer.
Format danych
Dane są odczytywane z usługi Event Hubs w postaci obiektów EventData .
Zobacz obsługiwane formaty.
Uwaga
Centrum zdarzeń nie obsługuje formatu .raw.
Dane można kompresować przy użyciu algorytmu
GZip
kompresji. OkreślCompression
właściwości pozyskiwania.- Kompresja danych nie jest obsługiwana w przypadku skompresowanych formatów (Avro, Parquet, ORC).
- Niestandardowe kodowanie i właściwości systemu osadzonego nie są obsługiwane w przypadku skompresowanych danych.
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:
Właściwości | opis |
---|---|
Tabela | Nazwa (uwzględniana wielkość liter) istniejącej tabeli docelowej. 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. |
Uwaga
Tylko zdarzenia umieszczone w kolejce po utworzeniu połączenia danych są pozyskiwane.
Routing zdarzeń
Podczas konfigurowania połączenia usługi Event Hubs z klastrem usługi Azure Synapse Data Explorer należy określić właściwości tabeli docelowej (nazwa tabeli, format danych, kompresja i mapowanie). Domyślny routing danych jest również określany jako static routing
.
Można również określić właściwości tabeli docelowej dla każdego zdarzenia przy użyciu właściwości zdarzenia. Połączenie będzie dynamicznie kierować dane określone w eventData.Properties, przesłaniając właściwości statyczne dla tego zdarzenia.
W poniższym przykładzie ustaw szczegóły usługi Event Hubs i wyślij dane metryk pogody do tabeli WeatherMetrics
.
Dane są w json
formacie. mapping1
element jest wstępnie zdefiniowany w tabeli WeatherMetrics
.
Ostrzeżenie
W tym przykładzie użyto parametry połączenia uwierzytelniania w celu nawiązania połączenia z usługą Event Hubs w celu uproszczenia przykładu. Jednak kodowanie parametry połączenia do skryptu wymaga bardzo wysokiego poziomu zaufania w aplikacji i niesie ze sobą zagrożenia bezpieczeństwa.
W przypadku długoterminowych, bezpiecznych rozwiązań użyj jednej z następujących opcji:
- Uwierzytelnianie bez hasła
- Zapisz parametry połączenia w usłudze Azure Key Vault i użyj tej metody, aby pobrać ją w kodzie.
var eventHubNamespaceConnectionString=<connection_string>;
var eventHubName=<event_hub>;
// Create the data
var metric = new Metric { Timestamp = DateTime.UtcNow, MetricName = "Temperature", Value = 32 };
var data = JsonConvert.SerializeObject(metric);
// Create the event and add optional "dynamic routing" properties
var eventData = new EventData(Encoding.UTF8.GetBytes(data));
eventData.Properties.Add("Table", "WeatherMetrics");
eventData.Properties.Add("Format", "json");
eventData.Properties.Add("IngestionMappingReference", "mapping1");
eventData.Properties.Add("Tags", "['mydatatag']");
// Send events
var eventHubClient = EventHubClient.CreateFromConnectionString(eventHubNamespaceConnectionString, eventHubName);
eventHubClient.Send(eventData);
eventHubClient.Close();
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 w tym czasie, zdarzenie jest w kolejce. Połączenie usługi Event Hubs w usłudze Azure Synapse Data Explorer spowoduje osadzenie wybranych właściwości w danych docelowych w tabeli.
Uwaga
- Właściwości systemu są obsługiwane w
json
formatach tabelarycznych (csv
tsv
itp.) i nie są obsługiwane w przypadku skompresowanych danych. W przypadku korzystania z nieobsługiwanego formatu dane będą nadal pozyskiwane, ale właściwości zostaną zignorowane. - 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 zdarzeń 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 tabeli właściwości systemu. - W przypadku
json
mapowania właściwości są dodawane zgodnie z nazwami właściwości w tabeli Właściwości systemu.
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 | długi | Numer sekwencji logicznej zdarzenia w strumieniu partycji usługi Event Hubs |
przesunięcie x-opt-offset | string | Przesunięcie zdarzenia ze strumienia partycji usługi Event Hubs. Identyfikator przesunięcia jest unikatowy w ramach partycji strumienia usługi Event Hubs |
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 |
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"}}'
']'
Połączenie usługi Event Hubs
Uwaga
Aby uzyskać najlepszą wydajność, utwórz wszystkie zasoby w tym samym regionie co klaster usługi Azure Synapse Data Explorer.
Tworzenie usługi Event Hubs
Jeśli jeszcze go nie masz, utwórz usługę Event Hubs. Nawiązywanie połączenia z usługą Event Hubs można zarządzać za pośrednictwem witryny Azure Portal, programowo za pomocą języka C# lub Python albo za pomocą szablonu usługi Azure Resource Manager.
Uwaga
- Liczba partycji nie jest zmienialna, dlatego podczas ustawiania liczby partycji należy rozważyć długoterminową skalę.
- Grupa konsumentów musi być unikatowa dla każdego konsumenta. Utwórz grupę odbiorców dedykowaną połączeniu usługi Azure Synapse Data Explorer.
Wysyłanie zdarzeń
Zobacz przykładową aplikację , która generuje dane i wysyła je do usługi Event Hubs.
Aby zapoznać się z przykładem generowania przykładowych danych, zobacz Pozyskiwanie danych z usługi Event Hubs do usługi Azure Synapse Data Explorer
Konfigurowanie rozwiązania do odzyskiwania po awarii geograficznej
Usługa Event Hubs oferuje rozwiązanie odzyskiwania po awarii geograficznej.
Usługa Azure Synapse Data Explorer nie obsługuje Alias
przestrzeni nazw usługi Event Hubs. Aby zaimplementować odzyskiwanie po awarii geograficznej w rozwiązaniu, utwórz dwa połączenia danych usługi Event Hubs: jedno dla podstawowej przestrzeni nazw i jedną dla pomocniczej przestrzeni nazw. Usługa Azure Synapse Data Explorer nasłuchuje obu połączeń usługi Event Hubs.
Uwaga
Użytkownik jest odpowiedzialny za zaimplementowanie trybu failover z podstawowej przestrzeni nazw do pomocniczej przestrzeni nazw.
Następne kroki
- Pozyskiwanie danych z usługi Event Hubs do usługi Azure Synapse Data Explorer
- Tworzenie połączenia danych usługi Event Hubs dla usługi Azure Synapse Data Explorer przy użyciu języka C#
- Tworzenie połączenia danych usługi Event Hubs dla usługi Azure Synapse Data Explorer przy użyciu języka Python
- Tworzenie połączenia danych usługi Event Hubs dla usługi Azure Synapse Data Explorer przy użyciu szablonu usługi Azure Resource Manager