Kusto.Ingest betöltési állapotjelentés
Ez a cikk bemutatja, hogyan használhatja az IKustoQueuedIngestClient funkciókat a betöltési kérések állapotának nyomon követésére.
Leírási osztályok
Ezek a leírási osztályok fontos részleteket tartalmaznak a betöltendő forrásadatokról, és ezeket a betöltési műveletben kell használni.
- SourceDescription
- DataReaderDescription
- StreamDescription
- FileDescription
- BlobDescription
Az osztályok mindegyike az absztrakt osztályból SourceDescription
származik, és az egyes adatforrások egyedi azonosítójának példányosítására szolgálnak. Ezután a rendszer minden azonosítót az állapotkövetéshez használ, és az adott művelethez kapcsolódó összes jelentésben, nyomkövetésben és kivételben megjelenik.
Osztály SourceDescription
A nagyméretű adathalmazok 1 GB-os adattömbökre lesznek felosztva, és minden rész külön lesz betöltve. Ugyanez a SourceId lesz alkalmazva az azonos adatkészletből származó összes betöltési műveletre.
public abstract class SourceDescription
{
public Guid? SourceId { get; set; }
}
DataReaderDescription osztály
public class DataReaderDescription : SourceDescription
{
public IDataReader DataReader { get; set; }
}
Osztály streamleírója
public class StreamDescription : SourceDescription
{
public Stream Stream { get; set; }
}
FileDescription osztály
public class FileDescription : SourceDescription
{
public string FilePath { get; set; }
}
BlobDescription osztály
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; }
}
Betöltési eredmények ábrázolása
IKustoIngestionResult interfész
Ez az interfész egyetlen várólistán lévő betöltési művelet eredményét rögzíti, és a segítségével SourceId
lekérhető.
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();
}
IngestionStatus osztály
Az IngestionStatus egyetlen betöltési művelet teljes állapotát tartalmazza.
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; }
}
Állapot számbavétele
Érték | Értelmezés | Ideiglenes/állandó |
---|---|---|
Függőben | Az érték a betöltés során változhat a betöltési művelet eredménye alapján | Ideiglenes |
Sikeres | Az adatok betöltése sikerült | Állandó |
Sikertelen | A betöltés nem sikerült | Állandó |
Várólistán | Az adatok betöltési várólistára kerültek | Állandó |
Kihagyva | Nem lett megadva adat, és a betöltési művelet ki lett hagyva | Állandó |
RészlegesenSucceeded | Az adatok egy része sikeresen betöltődött, míg néhány sikertelen volt | Állandó |
Betöltési állapot nyomon követése (KustoQueuedIngestClient)
Az IKustoQueuedIngestClient egy "fire-and-forget" ügyfél. Az ügyféloldali betöltési művelet úgy ér véget, hogy üzenetet küld egy Azure-üzenetsorba. A feladást követően az ügyfélfeladat befejeződik. Az ügyfélfelhasználó kényelme érdekében a KustoQueuedIngestClient egy mechanizmust biztosít az egyes betöltési állapot nyomon követéséhez. Ez a mechanizmus nem a nagy átviteli sebességű betöltési folyamatok tömegfelhasználására szolgál. Ez a mechanizmus a pontosság betöltésére vonatkozik, ha a sebesség viszonylag alacsony, és a követési követelmények szigorúak.
Figyelmeztetés
A nagy mennyiségű adatstreamek betöltési kérelmeinek pozitív értesítéseit el kell kerülni, mivel ez rendkívüli terhelést okoz a mögöttes xStore-erőforrásokra, ami megnövekedett betöltési késéshez, sőt a fürt teljes nem válaszképességéhez vezethet.
Az alábbi tulajdonságok (a KustoQueuedIngestionProperties beállítással) szabályozzák a sikeres vagy sikertelen betöltési értesítések szintjét és átvitelét.
IngestionReportLevel enumerálás
public enum IngestionReportLevel
{
FailuresOnly = 0,
None,
FailuresAndSuccesses
}
IngestionReportMethod enumerálás
public enum IngestionReportMethod
{
Queue = 0,
Table,
QueueAndTable
}
A betöltés állapotának nyomon követéséhez adja meg az alábbiakat annak az IKustoQueuedIngestClientnek , amellyel a betöltési műveletet hajtja végre:
- Állítsa be
IngestionReportLevel
a tulajdonságot a jelentés szükséges szintjére. VagyFailuresOnly
(amely az alapértelmezett érték) vagyFailuresAndSuccesses
. Ha a értékreNone
van állítva, a betöltés végén semmi sem lesz jelentve. - Adja meg a ,
Table
a vagyQueueAndTable
aQueue
IngestionReportMethod
- értéket.
A használati példa a Kusto.Ingest Példák oldalán található.
Betöltési állapot az Azure-táblázatban
Az IKustoIngestionResult
egyes betöltési műveletekből visszaadott felület olyan függvényeket tartalmaz, amelyek a betöltési állapot lekérdezésére használhatók.
Különös figyelmet kell fordítani a Status
visszaadott IngestionStatus
objektumok tulajdonságára:
Pending
azt jelzi, hogy a forrás várólistára lett helyezve a betöltéshez, és még nem frissítendő. A forrás állapotának lekérdezése a függvénnyelSucceeded
azt jelzi, hogy a forrás betöltése sikeresen megtörténtFailed
azt jelzi, hogy a forrás betöltése nem sikerült
Megjegyzés
Az állapot lekérése Queued
azt jelzi, hogy az IngestionReportMethod
alapértelmezett "Queue" értéken maradt. Ez egy állandó állapot, és a vagy GetIngestionStatusCollection
függvény ismételt meghívása GetIngestionStatusBySourceId
mindig ugyanazt a "Várólistán" állapotot eredményezi.
Egy Azure-táblában lévő betöltés állapotának ellenőrzéséhez a betöltés előtt ellenőrizze, hogy a IngestionReportMethod
KustoQueuedIngestionProperties tulajdonsága értékre Table
van-e állítva. Ha azt is szeretné, hogy a betöltési állapot egy üzenetsorba legyen jelentve, állítsa az állapotot értékre QueueAndTable
.
Betöltési állapot az Azure-üzenetsorban
A IKustoIngestionResult
metódusok csak az Azure-táblák állapotának ellenőrzéséhez szükségesek. Az Azure-üzenetsorba jelentett állapotok lekérdezéséhez használja az alábbi IKustoQueuedIngestClient metódusokat.
Metódus | Cél |
---|---|
PeekTopIngestionFailures | Aszinkron metódus, amely információkat ad vissza azokról a legkorábbi betöltési hibákról, amelyek még nem lettek elvetve a kért üzenetek korlátja miatt |
GetAndDiscardTopIngestionFailures | Aszinkron metódus, amely visszaadja és elveti azokat a legkorábbi betöltési hibákat, amelyek még nem lettek elvetve a kért üzenetek korlátja miatt |
GetAndDiscardTopIngestionSuccesses | Aszinkron metódus, amely visszaadja és elveti azokat a legkorábbi betöltési sikereket, amelyek még nem lettek elvetve a kért üzenetek korlátja miatt. Ez a módszer csak akkor releváns, ha a IngestionReportLevel értéke FailuresAndSuccesses |
Az Azure-üzenetsorból lekért betöltési hibák
A betöltési hibákat az IngestionFailure
objektum jelöli, amely hasznos információkat tartalmaz a hibáról.
Tulajdonság | Értelmezés |
---|---|
Adatbázis-& tábla | A kívánt adatbázis- és táblanevek |
IngestionSourcePath | A betöltött blob elérési útja. A fájl betöltésekor az eredeti fájlnevet fogja tartalmazni. Véletlenszerű lesz, ha a DataReader betöltve van |
FailureStatus | Permanent (nem lesz újrapróbálkozás végrehajtva), Transient (újrapróbálkozás lesz végrehajtva), vagy Exhausted (több újrapróbálkozás sem sikerült) |
OperationId & RootActivityId | A betöltés műveletazonosítója és RootActivity azonosítója (további hibaelhárításhoz hasznos) |
FailedOn | A hiba UTC-időpontja. Nagyobb lesz, mint a betöltési módszer meghívásának időpontja, mivel az adatok összesítése a betöltési folyamat futtatása előtt történik |
Részletek | A hibával kapcsolatos egyéb részletek (ha vannak ilyenek) |
ErrorCode | IngestionErrorCode enumerálás, a betöltési hibakódot jelöli, ha hiba történt |
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: