Condividi tramite


Connessione dati di Hub eventi (anteprima)

Hub eventi di Azure è una piattaforma di streaming di Big Data e un servizio di inserimento di eventi. Esplora dati di Azure Synapse offre l'inserimento dati continuo da hub eventi gestiti dal cliente.

La pipeline di inserimento di Hub eventi trasferisce gli eventi ad Azure Synapse Esplora dati in diversi passaggi. Creare prima un hub eventi nel portale di Azure. Si crea quindi una tabella di destinazione in Esplora dati di Azure Synapse in cui i dati in un formato specifico verranno inseriti usando le proprietà di inserimento dati specificate. La connessione a Hub eventi deve conoscere il routing degli eventi. I dati vengono incorporati con proprietà selezionate in base al mapping delle proprietà del sistema per gli eventi. Creare una connessione a Hub eventi per creare un Hub eventi e inviare eventi. Questo processo può essere gestito tramite il portale di Azure, a livello di codice con C# o Python oppure con il modello di Azure Resource Manager.

Per informazioni generali sull'inserimento dati in Esplora dati di Azure Synapse, vedere Panoramica dell'inserimento dati in Esplora dati di Azure Synapse.

Formato dati

  • I dati vengono letti da Hub eventi sotto forma di oggetti EventData .

  • Vedere i formati supportati.

    Nota

    L'hub eventi non supporta il formato .raw.

  • I dati possono essere compressi usando l'GZipalgoritmo di compressione. Specificare Compression nelle proprietà di inserimento.

    • La compressione dei dati non è supportata per i formati compressi (Avro, Parquet, ORC).
    • La codifica personalizzata e le proprietà di sistema incorporate non sono supportate nei dati compressi.

Proprietà di inserimento

Le proprietà di inserimento indicano al processo di inserimento dove indirizzare i dati e come elaborarli. È possibile specificare le proprietà di inserimento degli eventi usando EventData.Properties. È possibile impostare le proprietà seguenti:

Proprietà Descrizione
Table Nome (con distinzione tra maiuscole e minuscole) della tabella di destinazione esistente. Esegue l'override del set Table nel riquadro Data Connection.
Formato Formato dati. Esegue l'override del set Data format nel riquadro Data Connection.
IngestionMappingReference Nome del mapping di inserimento esistente da usare. Esegue l'override del set Column mapping nel riquadro Data Connection.
Compressione Compressione dei dati, None (impostazione predefinita) o compressione GZip.
Codifica Codifica dei dati, l'impostazione predefinita è UTF8. Può essere una delle codifiche supportate da .NET.
Tag Elenco di tag da associare ai dati inseriti, formattati come stringa di matrici JSON. Esistono implicazioni per le prestazioni quando si usano i tag.

Nota

Vengono inseriti solo gli eventi accodati dopo aver creato la connessione dati.

Routing degli eventi

Quando si configura una connessione di Hub eventi al cluster azure Synapse Esplora dati, si specificano le proprietà della tabella di destinazione (nome tabella, formato dati, compressione e mapping). Il routing predefinito per i dati viene definito anche static routing. È anche possibile specificare le proprietà della tabella di destinazione per ogni evento usando le proprietà dell'evento. La connessione indirizza dinamicamente i dati come specificato in EventData.Properties, ignorando le proprietà statiche per questo evento.

Nell'esempio seguente impostare i dettagli di Hub eventi e inviare i dati delle metriche meteo alla tabella WeatherMetrics. I dati sono in formato json. mapping1 è predefinito nella tabella WeatherMetrics.

Avviso

Questo esempio usa l'autenticazione stringa di connessione per connettersi a Hub eventi per semplicità dell'esempio. Tuttavia, il hardcodeding di un stringa di connessione nello script richiede un livello di attendibilità molto elevato nell'applicazione e comporta rischi per la sicurezza.

Per soluzioni sicure a lungo termine, usare una di queste opzioni:

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();

Mapping delle proprietà del sistema per gli eventi

Le proprietà di sistema archiviano le proprietà impostate dal servizio Hub eventi, al momento, l'evento viene accodato. La connessione di Hub eventi di Azure Synapse Esplora dati incorpora le proprietà selezionate nell'atterraggio dei dati nella tabella.

Nota

  • Le proprietà di sistema sono supportate per i formati json e i formati tabulari (csv, tsv e così via) e non sono supportate dai dati compressi. Se si usa un formato non supportato, i dati verranno comunque inseriti, ma le proprietà verranno ignorate.
  • Per i dati tabulari le proprietà di sistema sono supportate solo per i messaggi di evento a record singolo.
  • Per i dati JSON le proprietà di sistema sono supportate anche per i messaggi di evento a più record. In questi casi, le proprietà di sistema vengono aggiunte solo al primo record del messaggio di evento.
  • Per il mapping csv le proprietà vengono aggiunte all'inizio del record nell'ordine elencato nella tabella Proprietà di sistema.
  • Per il mapping json, le proprietà vengono aggiunte in base ai nomi delle proprietà nella tabella Proprietà di sistema.

Proprietà di sistema

Hub eventi espone le proprietà di sistema seguenti:

Proprietà Tipo di dati Descrizione
x-opt-enqueued-time datetime Ora UTC in cui l'evento è stato accodato
x-opt-sequence-number long Numero di sequenza logica dell'evento all'interno del flusso di partizione di Hub eventi
x-opt-offset string Offset dell'evento dal flusso di partizione di Hub eventi. L'identificatore di offset è univoco all'interno di una partizione del flusso di Hub eventi
x-opt-publisher string Nome del server di pubblicazione, se il messaggio è stato inviato a un endpoint del server di pubblicazione
x-opt-partition-key string Chiave di partizione della partizione corrispondente che ha archiviato l'evento

Se si seleziona Proprietà del sistema per gli eventi nella sezione Origine dati della tabella, è necessario includere le proprietà del sistema nello schema e nel mapping della tabella.

Esempi di mapping dello schema

Esempio di mapping dello schema di tabella

Se i dati includono tre colonne (Timespan, Metrice Value) e le proprietà incluse sono x-opt-enqueued-time e x-opt-offset, creare o modificare lo schema della tabella usando questo comando:

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

Esempio di mapping CSV

Eseguire i comandi seguenti per aggiungere dati all'inizio del record. Prendere nota dei valori ordinali.

    .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"}}'
    ']'

Esempio di mapping JSON

I dati verranno aggiunti usando il mapping delle proprietà di sistema. Eseguire i comandi seguenti:

    .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"}}'
    ']'

Connessione di Hub eventi

Nota

Per ottenere prestazioni ottimali, creare tutte le risorse nella stessa area del cluster di Esplora dati di Azure Synapse.

Creare un hub eventi

Se non è già disponibile, creare un hub eventi. La connessione a Hub eventi può essere gestita tramite il portale di Azure, a livello di codice con C# o Python o con il modello di Azure Resource Manager.

Nota

  • Il numero di partizioni non può essere modificato. È quindi consigliabile valutare le dimensioni a lungo termine in fase di impostazione del numero di partizioni.
  • Il gruppo di consumer deve essere univoco per ogni consumer. Creare un gruppo di consumer dedicato alla connessione di Esplora dati di Azure Synapse.

Inviare gli eventi

Vedere l'app di esempio che genera i dati e li invia a un hub eventi.

Per un esempio di come generare dati di esempio, vedere Inserire dati da Hub eventi in Azure Synapse Esplora dati

Configurare la soluzione di ripristino di emergenza geografico

Hub eventi offre una soluzione di ripristino di emergenza geografico . Azure Synapse Esplora dati non supporta Alias gli spazi dei nomi di Hub eventi. Per implementare il ripristino di emergenza geografico nella soluzione, creare due connessioni dati di Hub eventi: una per lo spazio dei nomi primario e una per lo spazio dei nomi secondario. Azure Synapse Esplora dati ascolterà entrambe le connessioni di Hub eventi.

Nota

È responsabilità dell'utente implementare un failover dallo spazio dei nomi primario allo spazio dei nomi secondario.

Passaggi successivi