다음을 통해 공유


log_reduce_predict_fl()

이 함수 log_reduce_predict_fl() 는 로그 줄과 같은 반정형 텍스트 열을 구문 분석하고 각 줄에 대해 미리 학습된 모델의 해당 패턴과 일치하거나 일치하는 패턴이 없는 경우 변칙을 보고합니다. 함수의 출력은 log_reduce_fl()와 비슷하지만 패턴은 log_reduce_train_fl()에서 생성된 미리 학습된 모델에서 검색됩니다.

필수 조건

구문

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

구문 규칙에 대해 자세히 알아봅니다.

매개 변수

이름 Type 필수 설명
models_tbl table ✔️ log_reduce_train_fl()에서 생성된 모델을 포함하는 테이블입니다. 테이블의 스키마는 (name:string, timestamp: datetime, model:string)이어야 합니다.
model_name string ✔️ models_tbl 검색할 모델의 이름입니다. 테이블에 모델 이름과 일치하는 모델이 거의 없는 경우 최신 모델이 사용됩니다.
reduce_col string ✔️ 함수가 적용되는 문자열 열의 이름입니다.
anomaly_str string 이 문자열은 모델에 일치하는 패턴이 없는 줄에 대한 출력입니다. 기본값은 "ANOMALY"입니다.

함수 정의

다음과 같이 해당 코드를 쿼리 정의 함수로 포함하거나 데이터베이스에 저장된 함수로 만들어 함수를 정의할 수 있습니다.

다음 let 문을 사용하여 함수를 정의합니다. 사용 권한이 필요 없습니다.

Important

let 문자체적으로 실행할 수 없습니다. 그 뒤에 테이블 형식 식 문이 있어야 합니다. 작업 예제 log_reduce_fl()를 실행하려면 예제를 참조 하세요.

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.

예시

다음 예제에서는 호출 연산자를 사용하여 함수를 실행합니다.

쿼리 정의 함수를 사용하려면 포함된 함수 정의 후에 호출합니다.

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

출력

Count LogReduce 예제
239 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: 수신 블록 blk_<NUM> src: <IP> dest: <IP> 081110 215858 15494 INFO dfs. DataNode$DataXceiver: 수신 블록 blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010
231 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: IP 081110 215858< 15485 INFO dfs에서> <NUM 크기의 <블록 blk_NUM>>을 수신했습니다. DataNode$PacketResponder: /10.251.43.21에서 67108864 크기의 블록 blk_5080254298708411681 수신됨
230 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: 블록 blk_NUM> 종료 081110 215858< 15496 INFO dfs에 대한 PacketResponder <NUM>입니다. DataNode$PacketResponder: 블록 blk_ 7746692545918257727 종료에 대한 PacketResponder 2
218 081110 <NUM><NUM> INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap update: <IP> 가 blk_<NUM> 크기 <NUM> 081110 215858 27 INFO dfs에 추가됩니다. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap updated: 10.250.11.85:50010이 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: *> 081110 215859 13 INFO dfs에 대한 <확인에 성공했습니다. DataBlockScanner: blk_ 7244926816084627474 대한 확인에 성공했습니다.

이 기능은 지원되지 않습니다.