Compartilhar via


log_reduce_predict_fl()

Aplica-se a: ✅Microsoft FabricAzure Data Explorer

A função log_reduce_predict_fl() analisa colunas textuais semiestruturadas, como linhas de log, e para cada linha corresponde ao respectivo padrão de um modelo pré-treinado ou relata uma anomalia se nenhum padrão correspondente for encontrado. A saída da função é semelhante a log_reduce_fl(), embora os padrões sejam recuperados de um modelo pré-treinado gerado por log_reduce_train_fl().

Pré-requisitos

  • O plug-in Python deve ser habilitado no cluster. Isso é necessário para o Python embutido usado na função.

Sintaxe

Tinvoke log_reduce_predict_fl(| models_tbl, model_name ,reduce_col [, anomaly_str ])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
models_tbl tabela ✔️ Uma tabela que contém modelos gerados por log_reduce_train_fl(). O esquema da tabela deve ser (name:string, timestamp: datetime, model:string).
model_name string ✔️ O nome do modelo que será recuperado do models_tbl. Se a tabela contiver poucos modelos que correspondam ao nome do modelo, o mais recente será usado.
reduce_col string ✔️ O nome da coluna de cadeia de caracteres à qual a função é aplicada.
anomaly_str string Essa sequência é gerada para linhas que não têm padrão correspondente no modelo. O valor padrão é "ANOMALY".

Definição de função

Você pode definir a função inserindo seu código como uma função definida por consulta ou criando-a como uma função armazenada em seu banco de dados, da seguinte maneira:

Defina a função usando a instrução let a seguir. Nenhuma permissão é necessária.

Importante

Uma instrução let não pode ser executada sozinha. Ele deve ser seguido por uma instrução de expressão tabular. Para executar um exemplo funcional de log_reduce_fl(), consulte Exemplo.

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.

Exemplo

O exemplo a seguir usa o operador invoke para executar a função.

Para usar uma função definida por consulta, invoque-a após a definição da função inserida.

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

Saída

Count LogReduce example
239 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Bloco de recebimento blk_<NUM> src: <IP> dest: <IP> 081110 215858 15494 INFO dfs. DataNode$DataXceiver: Bloco de recebimento blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010
231 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: Bloco recebido blk_<NUM> de tamanho <NUM> do <IP> 081110 215858 15485 INFO dfs. DataNode$PacketResponder: Bloco recebido blk_5080254298708411681 de tamanho 67108864 de /10.251.43.21
230 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: NUM do PacketResponder <para o bloco blk_<NUM> terminando 081110 215858 15496 INFO dfs.> DataNode$PacketResponder: PacketResponder 2 para terminação de bloco blk_-7746692545918257727
218 081110 <NUM><NUM> INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap atualizado: <IP> é adicionado ao tamanho <blk_<NUM> NUM> 081110 215858 27 INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap atualizado: 10.250.11.85:50010 é adicionado ao blk_5080254298708411681 tamanho 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ção bem-sucedida para <*> 081110 215859 13 INFO dfs. DataBlockScanner: Verificação bem-sucedida para blk_-7244926816084627474