Connessione dati di Hub eventi di Azure
Hub eventi di Azure è una piattaforma di streaming Big Data e un servizio di inserimento eventi. Azure Esplora dati offre l'inserimento continuo da Hub eventi gestiti dal cliente.
La pipeline di inserimento di Hub eventi trasferisce gli eventi ad Azure Esplora dati in diversi passaggi. Per prima cosa si crea un hub eventi nel portale di Azure. Si crea quindi una tabella di destinazione in Azure Esplora dati in cui i dati in un formato specifico verranno inseriti usando le proprietà di inserimento indicate. La connessione di Hub eventi deve conoscere il routing degli eventi. I dati possono essere incorporati con proprietà selezionate in base alle proprietà del sistema 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 o con il modello di Resource Manager di Azure.
Per informazioni generali sull'inserimento dei dati in Azure Esplora dati, vedere Panoramica dell'inserimento di dati in Azure Esplora dati.
Meccanismi di autenticazione della connessione dati di Azure Esplora dati
- Connessione dati basata su identità gestita (consigliata): l'uso di una connessione dati basata su identità gestita è il modo più sicuro per connettersi alle origini dati. Fornisce il controllo completo sulla possibilità di recuperare i dati da un'origine dati.
La configurazione di una connessione dati tramite l'identità gestita richiede la procedura seguente:
- Aggiungere un'identità gestita al cluster.
- Concedere le autorizzazioni all'identità gestita nell'origine dati.
- Impostare un criterio di identità gestito nei database di destinazione.
- Creare una connessione dati usando l'autenticazione di identità gestita per recuperare i dati.
Attenzione
Se le autorizzazioni di identità gestite vengono rimosse dall'origine dati, la connessione dati è disabilitata e non può recuperare i dati dall'origine dati.
- Connessione dati basata su chiavi: se un'identità gestita non è specificata nella connessione dati, la connessione viene automaticamente predefinita per l'autenticazione basata su chiavi. Le connessioni basate sulle chiavi recuperano i dati usando una risorsa stringa di connessione, ad esempio la Hub eventi di Azure stringa di connessione. Azure Esplora dati genera la risorsa stringa di connessione per la risorsa specificata e la salva in modo sicuro nella connessione dati. Il stringa di connessione viene quindi usato per recuperare i dati dall'origine dati.
Attenzione
Se la chiave viene ruotata, la connessione dati è disabilitata e non può recuperare i dati dall'origine dati. Per risolvere il problema, aggiornare o ricreare la connessione dati.
- In modo che l'MI possa recuperare i dati da Hub eventi di Azure, deve avere almeno Hub eventi di Azure ricevitore dati.
Formato dati
I dati sono letti dall'hub eventi sotto forma di oggetti EventData .
Vedere formati supportati.
Nota
- L'inserimento da Hub eventi non supporta il formato RAW.
- Registro schemi dell'hub eventi di Azure e Avro senza schema non sono supportati.
I dati possono essere compressi usando l'algoritmo
GZip
di compressione. È possibile specificareCompression
in modo dinamico usando le proprietà di inserimento o nelle impostazioni di connessione dati statiche.Nota
La compressione dei dati non è supportata per i formati compressi (Avro, Parquet, ORC, ApacheAvro e W3CLOGFILE). La codifica personalizzata e le proprietà del sistema incorporato non sono supportate nei dati compressi.
Proprietà di Hub eventi
Azure Esplora dati supporta le proprietà di Hub eventi seguenti:
- Set chiuso di proprietà di inserimento, che consente di instradare l'evento alla tabella pertinente.
- Set chiuso di proprietà del sistema eventi, che possono essere incorporate nei dati in base a un determinato mapping.
Nota
L'inserimento di proprietà personalizzate di Hub eventi, usate per associare i metadati agli eventi, non è supportato. Se è necessario inserire proprietà personalizzate, inviarle nel corpo dei dati dell'evento. Per altre informazioni, vedere Inserire proprietà personalizzate.
Proprietà di inserimento
Le proprietà di inserimento indicano al processo di inserimento, dove instradare i dati e come elaborarlo. È possibile specificare le proprietà di inserimento degli eventi usando EventData.Properties. È possibile inoltre impostare le proprietà seguenti:
Nota
I nomi delle proprietà distinguono tra maiuscole e minuscole.
Proprietà | Descrizione |
---|---|
Database | Nome con distinzione tra maiuscole e minuscole del database di destinazione. Per impostazione predefinita, i dati vengono inseriti nel database di destinazione associato alla connessione dati. Usare questa proprietà per eseguire l'override del database predefinito e inviare dati a un database diverso. A tale scopo, è prima necessario configurare la connessione come connessione a più database. |
Tabella | Nome con distinzione tra maiuscole e minuscole della tabella di destinazione esistente. Esegue l'override del Table set nel Data Connection riquadro. |
Formato | Formato dati. Esegue l'override del Data format set nel Data Connection riquadro. |
InserimentoMappingReference | Nome del mapping di inserimento esistente da usare. Esegue l'override del Column mapping set nel Data Connection riquadro. |
Compressione | Compressione dei dati, None (impostazione predefinita) o GZip compressione. |
Codifica | La codifica dei dati, il valore predefinito è UTF8. Può essere una delle codifiche supportate da .NET. |
Tag | Elenco di tag da associare ai dati inseriti, formattati come stringa di matrice JSON. Esistono implicazioni sulle prestazioni quando si usano i tag. |
RawHeaders | Indica che l'origine eventi è Kafka e Azure Esplora dati deve usare la deserializzazione della matrice byte per leggere altre proprietà di routing. Il valore viene ignorato. |
Nota
Vengono inseriti solo gli eventi accodati dopo aver creato la connessione dati.
Routing eventi
Quando si crea una connessione dati al cluster, è possibile specificare il routing per dove inviare dati inseriti. Il routing predefinito è la tabella di destinazione specificata nella stringa di connessione associata al database di destinazione. Il routing predefinito per i dati viene definito anche routing statico. È possibile specificare un routing alternativo per i dati impostando le proprietà dei dati dell'evento indicate in precedenza.
Instradare i dati degli eventi a un database alternativo
Il routing dei dati a un database alternativo è disattivato per impostazione predefinita. Per inviare i dati a un database diverso, è prima necessario impostare la connessione come connessione a più database. È possibile eseguire questa operazione nel portale di Azure portale di Azure, C#, Python o un modello di Resource Manager. L'utente, il gruppo, l'entità servizio o l'identità gestita usata per consentire il routing del database deve avere almeno il ruolo collaboratore e le autorizzazioni di scrittura nel cluster.
Per specificare un database alternativo, impostare la proprietà Inserimentodatabase.
Avviso
Se si specifica un database alternativo senza impostare la connessione come connessione a più database, l'inserimento avrà esito negativo.
Instradare i dati dell'evento a una tabella alternativa
Per specificare una tabella alternativa per ogni evento, impostare le proprietàTable, Format, Compression e mapping. La connessione instrada dinamicamente i dati inseriti come specificato in EventData.Properties, ignorando le proprietà statiche per questo evento.
L'esempio seguente illustra come impostare i dettagli dell'hub eventi e inviare i dati delle metriche meteo a un database alternativo (MetricsDB) e a una tabella (WeatherMetrics). I dati sono in formato JSON e mapping1 è predefinito nella tabella 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);
Mapping delle proprietà del sistema per gli eventi
Le proprietà di sistema archiviano le proprietà impostate dal servizio Hub eventi, al momento dell'accodamento dell'evento. La connessione dati all'hub eventi può incorporare un set selezionato di proprietà di sistema nei dati inseriti in una tabella in base a un determinato mapping.
Nota
- L'incorporamento delle proprietà di sistema è supportato per i formati json e tabulari ( ad esempio
JSON
, ,MultiJSON
CSV
,SOHsv
TSV
PSV
SCsv
TSVE
). - Quando si usa un formato non supportato (i.e. TXT o formati compressi come
Parquet
eAvro
così via), i dati verranno comunque inseriti, ma le proprietà verranno ignorate. - L'incorporamento delle proprietà di sistema non è supportato quando viene impostata una compressione dei messaggi dell'hub eventi. In questi scenari, verrà generato un errore appropriato e i dati non verranno inseriti.
- 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
CSV
il mapping, le proprietà vengono aggiunte all'inizio del record nell'ordine elencato nella creazione della connessione dati. Non basarsi sull'ordine di queste proprietà, perché potrebbe cambiare in futuro. - Per
JSON
il mapping, le proprietà vengono aggiunte in base ai nomi delle proprietà nella tabella Delle proprietà di sistema .
Il servizio 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 dell'hub eventi |
x-opt-offset | string |
Offset dell'evento dal flusso di partizione dell'hub eventi. L'identificatore di offset è univoco all'interno di una partizione del flusso dell'hub eventi |
x-opt-publisher | string |
Nome dell'editore, 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 |
Quando si lavora con hub eventi di IoT Central, è anche possibile incorporare hub IoT proprietà di sistema nel payload. Per l'elenco completo, vedere hub IoT proprietà di sistema.
Se nella sezione Origine dati della tabella sono state selezionate le proprietà del sistema eventi, è necessario includere le proprietà nello schema della tabella e nel mapping.
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 questi comandi:
.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"}}'
']'
Mapping dello schema per i file Avro dell'acquisizione di Hub eventi
Un modo per usare i dati dell'hub eventi consiste nell'acquisire eventi tramite Hub eventi di Azure in Archiviazione BLOB di Azure o Azure Data Lake Storage. È quindi possibile inserire i file di acquisizione mentre vengono scritti usando una connessione dati di Griglia di eventi in Azure Esplora dati.
Lo schema dei file di acquisizione è diverso dallo schema dell'evento originale inviato all'hub eventi. È consigliabile progettare lo schema della tabella di destinazione tenendo presente questa differenza. In particolare, il payload dell'evento è rappresentato nel file di acquisizione come matrice di byte e questa matrice non viene decodificata automaticamente dalla connessione dati di Griglia di eventi di Azure Esplora dati. Per informazioni più specifiche sullo schema di file per i dati di acquisizione avro dell'hub eventi, vedere Esplorazione dei file Avro acquisiti in Hub eventi di Azure.
Per decodificare correttamente il payload dell'evento:
- Eseguire il mapping del
Body
campo dell'evento acquisito a una colonna di tipodynamic
nella tabella di destinazione. - Applicare un criterio di aggiornamento che converte la matrice di byte in una stringa leggibile usando la funzione unicode_codepoints_to_string().
Inserire proprietà personalizzate
Quando si inseriscono eventi da Hub eventi, i dati vengono acquisiti dalla body
sezione dell'oggetto dati dell'evento. Tuttavia, le proprietà personalizzate di Hub eventi vengono definite nella properties
sezione dell'oggetto e non vengono inserite. Per inserire le proprietà dei clienti, è necessario incorporarle nei dati nella body
sezione dell'oggetto .
Nell'esempio seguente viene confrontato l'oggetto dati degli eventi contenente la proprietà customProperty
personalizzata definita da Hub eventi (a sinistra) con la proprietà incorporata necessaria per l'inserimento (a destra).
{
"body":{
"value": 42
},
"properties":{
"customProperty": "123456789"
}
}
{
"body":{
"value": 42,
"customProperty": "123456789"
}
}
È possibile utilizzare uno dei metodi seguenti per incorporare proprietà personalizzate nei dati nella body
sezione dell'oggetto dati dell'evento:
- In Hub eventi, quando si crea l'oggetto dati dell'evento, incorporare le proprietà personalizzate come parte dei dati nella
body
sezione dell'oggetto . - Usare Azure Stream Analytics per elaborare gli eventi dall'hub eventi e incorporare le proprietà personalizzate nei dati dell'evento. Da Azure Stream Analytics è possibile inserire i dati in modo nativo usando il connettore di output di Azure Esplora dati oppure instradare i dati in un altro hub eventi e da lì nel cluster.
- Usare Funzioni di Azure per aggiungere le proprietà personalizzate e quindi inserire i dati.
Connessione dati di Hub eventi tra aree
Per ottenere prestazioni ottimali, creare tutte le risorse seguenti nella stessa area del cluster. Se non esiste un'altra alternativa, prendere in considerazione l'uso di livelli Di Hub eventi Premium o Dedicato . Il confronto tra i livelli di Hub eventi è disponibile qui.
Creare un hub eventi
Se non è già disponibile, creare un hub eventi. La connessione all'hub eventi può essere gestita tramite il portale di Azure, a livello di codice con C# o Python o con il modello di Resource Manager di Azure.
Nota
- La possibilità di aggiungere partizioni in modo dinamico dopo la creazione di un hub eventi è disponibile solo con i livelli Premium e Dedicati di Hub eventi. Quando si imposta il numero di partizioni, considerare la scalabilità a lungo termine.
- Il gruppo di consumer deve essere univoco per ogni consumer. Creare un gruppo di consumer dedicato alla connessione Esplora dati di Azure.
Inviare 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 dall'hub eventi in Azure Esplora dati
Configurare la soluzione di ripristino di emergenza geografico
Hub eventi offre una soluzione di ripristino di emergenza geografico .
Azure Esplora dati non supporta Alias
gli spazi dei nomi dell'hub eventi. Per implementare il ripristino di emergenza geografico nella soluzione, creare due connessioni dati dell'hub eventi: una per lo spazio dei nomi primario e una per lo spazio dei nomi secondario. Azure Esplora dati sarà in ascolto di entrambe le connessioni dell'hub eventi.
Nota
È responsabilità dell'utente implementare un failover dallo spazio dei nomi primario allo spazio dei nomi secondario.
Contenuti correlati
- Inserire dati dall'hub eventi in Esplora dati di Azure
- Creare una connessione dati dell'hub eventi per Azure Esplora dati usando C#
- Creare una connessione dati dell'hub eventi per Azure Esplora dati usando Python
- Creare una connessione dati dell'hub eventi per Azure Esplora dati usando il modello di Resource Manager di Azure
- Gestire le connessioni dati di Hub eventi nel cluster gratuito
- Inserire ed eseguire query sui log di Monitoraggio di Azure con Azure Esplora dati
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per