Segnalazione dello stato di inserimento di Kusto.Ingest
Questo articolo illustra come usare le funzionalità IKustoQueuedIngestClient per tenere traccia dello stato di una richiesta di inserimento.
Classi di descrizione
Queste classi di descrizione contengono dettagli importanti sui dati di origine da inserire e devono essere usati nell'operazione di inserimento.
- SourceDescription
- DataReaderDescription
- StreamDescription
- FileDescription
- BLOBDescription
Le classi sono tutte derivate dalla classe SourceDescription
astratta e vengono usate per creare un'istanza di un identificatore univoco per ogni origine dati. Ogni identificatore verrà quindi usato per il rilevamento dello stato e verrà visualizzato in tutti i report, le tracce e le eccezioni correlate all'operazione pertinente.
Classe SourceDescription
I set di dati di grandi dimensioni verranno suddivisi in blocchi da 1 GB e ogni parte verrà inserita separatamente. Lo stesso SourceId verrà quindi applicato a tutte le operazioni di inserimento originati dallo stesso set di dati.
public abstract class SourceDescription
{
public Guid? SourceId { get; set; }
}
Classe DataReaderDescription
public class DataReaderDescription : SourceDescription
{
public IDataReader DataReader { get; set; }
}
Classe StreamDescription
public class StreamDescription : SourceDescription
{
public Stream Stream { get; set; }
}
Classe FileDescription
public class FileDescription : SourceDescription
{
public string FilePath { get; set; }
}
Classe BLOBDescription
public class BlobDescription : SourceDescription
{
public string BlobUri { get; set; }
// Setting the Blob size here is important, as this saves the client the trouble of probing the blob for size
public long? BlobSize { get; set; }
}
Rappresentazione dei risultati di inserimento
Interfaccia IKustoIngestionResult
Questa interfaccia acquisisce il risultato di un'operazione di inserimento in coda singola e può essere recuperata da SourceId
.
public interface IKustoIngestionResult
{
// Retrieves the detailed ingestion status of the ingestion source with the given sourceId.
IngestionStatus GetIngestionStatusBySourceId(Guid sourceId);
// Retrieves the detailed ingestion status of all data ingestion operations into Kusto associated with this IKustoIngestionResult instance.
IEnumerable<IngestionStatus> GetIngestionStatusCollection();
}
Classe InserimentoStatus
InserimentoStatus contiene uno stato completo di un'operazione di inserimento singola.
public class IngestionStatus
{
// The ingestion status returns from the service. Status remains 'Pending' during the ingestion process and
// is updated by the service once the ingestion completes. When <see cref="IngestionReportMethod"/> is set to 'Queue' the ingestion status
// will always be 'Queued' and the caller needs to query the report queues for ingestion status, as configured. To query statuses that were
// reported to queue, see: <see href="https://learn.microsoft.com/azure/kusto/api/netfx/kusto-ingest-client-status#ingestion-status-in-azure-queue"/>.
// When <see cref="IngestionReportMethod"/> is set to 'Table', call <see cref="IKustoIngestionResult.GetIngestionStatusBySourceId"/> or
// <see cref="IKustoIngestionResult.GetIngestionStatusCollection"/> to retrieve the most recent ingestion status.
public Status Status { get; set; }
// A unique identifier representing the ingested source. Can be supplied during the ingestion execution.
public Guid IngestionSourceId { get; set; }
// The URI of the blob, potentially including the secret needed to access the blob.
// This can be a filesystem URI (on-premises deployments only), or an Azure Blob Storage URI (including a SAS key or a semicolon followed by the account key)
public string IngestionSourcePath { get; set; }
// The name of the database holding the target table.
public string Database { get; set; }
// The name of the target table into which the data will be ingested.
public string Table { get; set; }
// The last updated time of the ingestion status.
public DateTime UpdatedOn { get; set; }
// The ingestion's operation Id.
public Guid OperationId { get; set; }
// The ingestion operation activity Id.
public Guid ActivityId { get; set; }
// In case of a failure - indicates the failure's error code.
public IngestionErrorCode ErrorCode { get; set; }
// In case of a failure - indicates the failure's status.
public FailureStatus FailureStatus { get; set; }
// In case of a failure - indicates the failure's details.
public string Details { get; set; }
// In case of a failure - indicates whether or not the failures originate from an Update Policy.
public bool OriginatesFromUpdatePolicy { get; set; }
}
Enumerazione stato
Valore | Significato | Temporaneo/Permanente |
---|---|---|
In sospeso | Il valore può cambiare durante il corso dell'inserimento, in base al risultato dell'operazione di inserimento | Temporaneo |
Completato | I dati sono stati inseriti correttamente | Permanente |
Non riuscito | Inserimento non riuscito | Permanente |
Queued | I dati sono stati accodati per l'inserimento | Permanente |
Operazione ignorata | Non sono stati forniti dati e l'operazione di inserimento è stata ignorata | Permanente |
Parzialmentesucceed | Parte dei dati è stata inserita correttamente, mentre alcuni non sono riusciti | Permanente |
Stato inserimento rilevamento (KustoQueuedIngestClient)
IKustoQueuedIngestClient è un client "fire-and-forget". L'operazione di inserimento sul lato client termina pubblicando un messaggio a una coda di Azure. Dopo la registrazione, il processo client viene eseguito. Per praticità dell'utente client, KustoQueuedIngestClient offre un meccanismo per tenere traccia dello stato di inserimento individuale. Questo meccanismo non è destinato all'utilizzo di massa in pipeline di inserimento con velocità effettiva elevata. Questo meccanismo è per l'inserimento di precisione quando la frequenza è relativamente bassa e i requisiti di rilevamento sono rigorosi.
Avviso
L'attivazione di notifiche positive per ogni richiesta di inserimento per flussi di dati di volume di grandi dimensioni deve essere evitata, poiché questo inserisce un carico estremo sulle risorse xStore sottostanti, che potrebbe causare un aumento della latenza di inserimento e anche la velocità di risposta del cluster completa.
Le proprietà seguenti (impostate in KustoQueuedIngestionProperties) controllano il livello e il trasporto per l'operazione di inserimento o notifiche di errore.
Enumerazione IngestionReportLevel
public enum IngestionReportLevel
{
FailuresOnly = 0,
None,
FailuresAndSuccesses
}
Enumerazione IngestionReportMethod
public enum IngestionReportMethod
{
Queue = 0,
Table,
QueueAndTable
}
Per tenere traccia dello stato dell'inserimento, specificare quanto segue per IKustoQueuedIngestClient con cui si esegue l'operazione di inserimento:
- Impostare
IngestionReportLevel
la proprietà sul livello necessario del report.FailuresOnly
(ovvero il valore predefinito) oFailuresAndSuccesses
. Se impostato suNone
, non verrà segnalato nulla alla fine dell'inserimento. - Specificare ,
IngestionReportMethod
Table
-Queue
o .QueueAndTable
È possibile trovare un esempio di utilizzo nella pagina Esempi di Kusto.Ingest .
Stato di inserimento nella tabella di Azure
L'interfaccia IKustoIngestionResult
restituita da ogni operazione di inserimento contiene funzioni che possono essere usate per eseguire query sullo stato dell'inserimento.
Prestare particolare attenzione alla Status
proprietà degli oggetti restituiti IngestionStatus
:
Pending
indica che l'origine è stata accodata per l'inserimento ed è ancora da aggiornare. Usare di nuovo la funzione per eseguire una query sullo stato dell'origineSucceeded
indica che l'origine è stata inserita correttamenteFailed
indica che l'origine non è riuscita a essere inserita
Nota
Ottenere uno Queued
stato indica che l'oggetto IngestionReportMethod
è stato lasciato al valore predefinito di 'Queue'. Questo è uno stato permanente e richiama GetIngestionStatusBySourceId
le funzioni o GetIngestionStatusCollection
, genera sempre lo stesso stato "Accodato".
Per controllare lo stato di un inserimento in una tabella di Azure, prima di inserire, verificare che la IngestionReportMethod
proprietà di KustoQueuedIngestionProperties sia impostata su Table
. Se si vuole che lo stato di inserimento venga segnalato a una coda, impostare lo stato su QueueAndTable
.
Stato di inserimento nella coda di Azure
I IKustoIngestionResult
metodi sono rilevanti solo per controllare lo stato in una tabella di Azure. Per eseguire query su stati segnalati a una coda di Azure, usare i metodi IKustoQueuedIngestClient seguenti.
Metodo | Scopo |
---|---|
PeekTopIngestionFailures | Metodo asincrono che restituisce informazioni sui primi errori di inserimento che non sono già stati eliminati a causa del limite per i messaggi richiesti |
GetAndDiscardTopIngestionFailures | Metodo asincrono che restituisce ed elimina i primi errori di inserimento che non sono già stati eliminati a causa del limite per i messaggi richiesti |
GetAndDiscardTopIngestionSuccesses | Metodo asincrono che restituisce ed elimina i primi successi di inserimento che non sono già stati eliminati a causa del limite per i messaggi richiesti. Questo metodo è rilevante solo se l'oggetto IngestionReportLevel è impostato su FailuresAndSuccesses |
Errori di inserimento recuperati dalla coda di Azure
Gli errori di inserimento sono rappresentati dall'oggetto che contiene informazioni utili sull'errore IngestionFailure
.
Proprietà | Significato |
---|---|
Tabella & database | Nomi di database e tabelle previsti |
InserimentoSourcePath | Percorso del BLOB inserito. Conterrà il nome del file originale se il file viene inserito. Sarà casuale se DataReader viene inserito |
FailureStatus | Permanent (non verrà eseguito alcun nuovo tentativo), Transient (verrà eseguito un nuovo tentativo) o Exhausted (anche diversi tentativi non sono riusciti) |
OperationId & RootActivityId | ID operazione e ID RootActivity dell'inserimento (utile per altre operazioni di risoluzione dei problemi) |
FailedOn | Ora UTC dell'errore. Sarà maggiore del tempo in cui è stato chiamato il metodo di inserimento, poiché i dati vengono aggregati prima di eseguire l'inserimento |
Dettagli | Altri dettagli relativi all'errore (se presente) |
ErrorCode | IngestionErrorCode enumerazione, rappresenta il codice di errore di inserimento, se si è verificato un errore |
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