Delen via


log_reduce_predict_fl()

De functie log_reduce_predict_fl() parseert semi-gestructureerde tekstkolommen, zoals logboekregels, en voor elke regel komt deze overeen met het respectieve patroon van een vooraf getraind model of rapporteert een anomalie als er geen overeenkomend patroon is gevonden. De uitvoer van de functie is vergelijkbaar met log_reduce_fl(), hoewel de patronen worden opgehaald uit een vooraf getraind model dat is gegenereerd door log_reduce_train_fl().

Vereisten

  • De Python-invoegtoepassing moet zijn ingeschakeld op het cluster. Dit is vereist voor de inline Python die in de functie wordt gebruikt.

Syntax

T|invokelog_reduce_predict_fl(, models_tbl, model_namereduce_col [,anomaly_str ])

Meer informatie over syntaxisconventies.

Parameters

Naam Type Vereist Beschrijving
models_tbl tabel ✔️ Een tabel met modellen die zijn gegenereerd door log_reduce_train_fl(). Het schema van de tabel moet (name:string, timestamp: datetime, model:string) zijn.
model_name string ✔️ De naam van het model dat wordt opgehaald uit models_tbl. Als de tabel enkele modellen bevat die overeenkomen met de modelnaam, wordt de meest recente gebruikt.
reduce_col string ✔️ De naam van de tekenreekskolom waarop de functie wordt toegepast.
anomaly_str string Deze tekenreeks is uitvoer voor regels die geen overeenkomend patroon in het model hebben. De standaardwaarde is 'ANOMALIE'.

Functiedefinitie

U kunt de functie als volgt definiëren door de code in te sluiten als een door een query gedefinieerde functie of door deze te maken als een opgeslagen functie in uw database:

Definieer de functie met behulp van de volgende let-instructie. Er zijn geen machtigingen vereist.

Belangrijk

Een let-instructie kan niet zelfstandig worden uitgevoerd. Deze moet worden gevolgd door een tabellaire expressie-instructie. Zie Voorbeeld als u een werkend voorbeeld van log_reduce_fl()wilt uitvoeren.

let log_reduce_predict_fl=(tbl:(*), models_tbl: (name:string, timestamp: datetime, model:string), 
                      model_name:string, reduce_col:string, anomaly_str: string = 'ANOMALY')
{
    let model_str = toscalar(models_tbl | where name == model_name | top 1 by timestamp desc | project model);
    let kwargs = bag_pack('logs_col', reduce_col, 'output_patterns_col', 'LogReduce','output_parameters_col', '', 
                          'model', model_str, 'anomaly_str', anomaly_str, 'output_type', 'summary');
    let code = ```if 1:
        from log_cluster import log_reduce_predict
        result = log_reduce_predict.log_reduce_predict(df, kargs)
    ```;
    tbl
    | evaluate hint.distribution=per_node python(typeof(Count:int, LogReduce:string, example:string), code, kwargs)
};
// Write your query to use the function here.

Voorbeeld

In het volgende voorbeeld wordt de operator aanroepen gebruikt om de functie uit te voeren.

Als u een querygedefinieerde functie wilt gebruiken, roept u deze aan na de definitie van de ingesloten functie.

let log_reduce_predict_fl=(tbl:(*), models_tbl: (name:string, timestamp: datetime, model:string), 
                      model_name:string, reduce_col:string, anomaly_str: string = 'ANOMALY')
{
    let model_str = toscalar(models_tbl | where name == model_name | top 1 by timestamp desc | project model);
    let kwargs = bag_pack('logs_col', reduce_col, 'output_patterns_col', 'LogReduce','output_parameters_col', '', 
                          'model', model_str, 'anomaly_str', anomaly_str, 'output_type', 'summary');
    let code = ```if 1:
        from log_cluster import log_reduce_predict
        result = log_reduce_predict.log_reduce_predict(df, kargs)
    ```;
    tbl
    | evaluate hint.distribution=per_node python(typeof(Count:int, LogReduce:string, example:string), code, kwargs)
};
HDFS_log_100k
| take 1000
| invoke log_reduce_predict_fl(models_tbl=ML_Models, model_name="HDFS_100K", reduce_col="data")

Uitvoer

Count LogReduce Voorbeeld
239 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Ontvangen van blok blk_<NUM> src: <IP> dest: <IP> 081110 215858 15494 INFO dfs. DataNode$DataXceiver: Ontvangen van blok blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010
231 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: Ontvangen blok blk_<NUM> van grootte <NUM> van <IP> 081110 215858 15485 INFO dfs. DataNode$PacketResponder: Ontvangen blok blk_5080254298708411681 van grootte 67108864 van /10.251.43.21
230 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: PacketResponder <NUM> for block blk_<NUM> terminating 081110 215858 15496 INFO dfs. DataNode$PacketResponder: PacketResponder 2 voor het beëindigen van blok blk_-7746692545918257727
218 081110 <NUM><NUM> INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap updated: <IP> is added to blk_<NUM> size <NUM> 081110 215858 27 INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap updated: 10.250.11.85:50010 is added to blk_5080254298708411681 size 67108864
79 081110 <NUM><NUM> INFO dfs. FSNamesystem: BLOCK* NameSystem.allocateBlock: <>. <> 081110 215858 26 INFO dfs. FSNamesystem: BLOCK* NameSystem.allocateBlock: /user/root/rand3/_temporary/task_200811101024_0005_m_001805_0/part-01805. blk-7037346755429293022
3 081110 <NUM><NUM> INFO dfs. DataBlockScanner: Verificatie is geslaagd voor <*> 081110 215859 13 INFO dfs. DataBlockScanner: verificatie is geslaagd voor blk_-7244926816084627474

Deze functie wordt niet ondersteund.