Condividi tramite


log_reduce_predict_fl()

La funzione log_reduce_predict_fl() analizza le colonne testuali semistrutturate, ad esempio le righe di log e per ogni riga corrisponde al rispettivo modello da un modello con training preliminare o segnala un'anomalia se non è stato trovato alcun criterio corrispondente. L'output della funzione è simile a log_reduce_fl(), anche se i modelli vengono recuperati da un modello con training preliminare generato da log_reduce_train_fl().

Prerequisiti

  • Il plug-in Python deve essere abilitato nel cluster. Questa operazione è necessaria per Python inline usato nella funzione .
  • Il plug-in Python deve essere abilitato nel database. Questa operazione è necessaria per Python inline usato nella funzione .

Sintassi

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

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
models_tbl table ✔️ Tabella contenente i modelli generati da log_reduce_train_fl(). Lo schema della tabella deve essere (name:string, timestamp: datetime, model:string).
model_name string ✔️ Nome del modello che verrà recuperato da models_tbl. Se la tabella contiene alcuni modelli corrispondenti al nome del modello, viene usata la versione più recente.
reduce_col string ✔️ Nome della colonna stringa a cui viene applicata la funzione.
anomaly_str string Questa stringa viene restituita per le righe senza criteri corrispondenti nel modello. Il valore predefinito è "ANOMALY".

Definizione di funzione

È possibile definire la funzione incorporando il codice come funzione definita da query o creandola come funzione archiviata nel database, come indicato di seguito:

Definire la funzione usando l'istruzione let seguente. Non sono necessarie autorizzazioni.

Importante

Un'istruzione let non può essere eseguita autonomamente. Deve essere seguita da un'istruzione di espressione tabulare. Per eseguire un esempio funzionante di log_reduce_fl(), vedere Esempio.

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.

Esempio

Nell'esempio seguente viene utilizzato l'operatore invoke per eseguire la funzione .

Per usare una funzione definita da query, richiamarla dopo la definizione della funzione incorporata.

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

Output

Conteggio LogReduce esempio
239 081110 <NUM NUM><> INFO dfs. DataNode$DataXceiver: ricezione blocco blk_<NUM> src: <IP dest: <IP>> 081110 215858 15494 INFO dfs. DataNode$DataXceiver: ricezione blocco blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010
231 081110 <NUM NUM><> INFO dfs. DataNode$PacketResponder: blocco ricevuto blk_<NUM> di dimensioni <NUM> da <IP> 081110 215858 15485 INFO dfs. DataNode$PacketResponder: blocco ricevuto blk_5080254298708411681 di dimensioni 67108864 da /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 per il blocco blk_-7746692545918257727 terminazione
218 081110 <NUM NUM><> INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap aggiornato: <IP> viene aggiunto a blk_<>NUM dimensioni <NUM> 081110 215858 27 INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap aggiornato: 10.250.11.85:50010 viene aggiunto alle dimensioni blk_5080254298708411681 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: verifica riuscita per <*> 081110 215859 13 INFO dfs. DataBlockScanner: verifica riuscita per blk_-7244926816084627474

Questa funzionalità non è supportata.