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'
GZip
algoritmo di compressione. SpecificareCompression
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:
- Autenticazione senza password
- Archiviare il stringa di connessione in un insieme di credenziali delle chiavi di Azure e usare questo metodo per recuperarlo nel codice.
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
, Metric
e 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
- Inserire dati da Hub eventi in Azure Synapse Esplora dati
- Creare una connessione dati di Hub eventi per Azure Synapse Esplora dati usando C#
- Creare una connessione dati di Hub eventi per Azure Synapse Esplora dati usando Python
- Creare una connessione dati di Hub eventi per azure Synapse Esplora dati usando il modello di Azure Resource Manager