Udostępnij za pośrednictwem


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śl Compression 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:

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 (csvtsvitp.) 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