Sdílet prostřednictvím


log_reduce_predict_fl()

Funkce log_reduce_predict_fl() analyzuje částečně strukturované textové sloupce, například řádky protokolu, a pro každý řádek odpovídá příslušnému vzoru z předem vytrénovaného modelu nebo nahlásí anomálii, pokud nebyl nalezen žádný odpovídající vzor. Výstup funkce je podobný log_reduce_fl(), ale vzory se načítají z předem vytrénovaného modelu, který vygeneroval log_reduce_train_fl().

Požadavky

  • Modul plug-in Pythonu musí být v clusteru povolený. To se vyžaduje pro vložený Python použitý ve funkci .
  • V databázi musí být povolený modul plug-in Pythonu. To se vyžaduje pro vložený Python použitý ve funkci .

Syntax

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

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
models_tbl tabulka ✔️ Tabulka obsahující modely vygenerované log_reduce_train_fl() Schéma tabulky by mělo být (name:string, timestamp: datetime, model:string).
model_name string ✔️ Název modelu, který se načte z models_tbl. Pokud tabulka obsahuje několik modelů odpovídajících názvu modelu, použije se nejnovější model.
reduce_col string ✔️ Název sloupce řetězce, na který se funkce použije.
anomaly_str string Tento řetězec je výstupem pro řádky, které nemají v modelu žádný odpovídající vzor. Výchozí hodnota je ANOMÁLIE.

Definice funkce

Funkci můžete definovat vložením jejího kódu jako funkce definované dotazem nebo jejím vytvořením jako uložené funkce v databázi, a to následujícím způsobem:

Definujte funkci pomocí následujícího příkazu let. Nejsou vyžadována žádná oprávnění.

Důležité

Příkaz let nelze spustit samostatně. Musí za ním následovat příkaz tabulkového výrazu. Pokud chcete spustit funkční příklad , podívejte se na log_reduce_fl()příklad.

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.

Příklad

Následující příklad používá operátor invoke ke spuštění funkce.

Pokud chcete použít funkci definovanou dotazem, vyvolejte ji po definici vložené funkce.

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")

Výstup

Počet LogReduce příklad
239 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Příjem bloku blk_<NUM> src: <IP> dest: <IP> 081110 215858 15494 INFO dfs. DataNode$DataXceiver: Příjem bloku blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010
231 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: Přijatý blokový blk_<NUM> o velikosti <NUM> z <IP> 081110 215858 15485 INFO dfs. DataNode$PacketResponder: Přijatý blokový blk_5080254298708411681 velikosti 67108864 od /10.251.43.21
230 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: PacketResponder <NUM> pro blok blk_<NUM> ukončující 081110 215858 15496 INFO dfs. DataNode$PacketResponder: PacketResponder 2 pro ukončení bloku blk_-7746692545918257727
218 081110 <NUM><NUM> INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap updated: <IP> adresa je přidaná do blk_<NUM> velikost <NUM> 081110 215858 27 INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap aktualizováno: 10.250.11.85:50010 je přidán do blk_5080254298708411681 velikost 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: Ověření pro <*> 081110 215859 13 INFO dfs bylo úspěšné. DataBlockScanner: Ověření pro blk_-7244926816084627474 proběhlo úspěšně.

Tato funkce není podporovaná.