log_reduce_predict_fl()
Funkcja log_reduce_predict_fl()
analizuje częściowo ustrukturyzowane kolumny tekstowe, takie jak wiersze dziennika, a dla każdego wiersza pasuje do odpowiedniego wzorca ze wstępnie wytrenowanego modelu lub zgłasza anomalię, jeśli nie znaleziono pasującego wzorca. Dane wyjściowe funkcji są podobne do log_reduce_fl(), chociaż wzorce są pobierane z wstępnie wytrenowanego modelu wygenerowanego przez log_reduce_train_fl().
Wymagania wstępne
- Wtyczka języka Python musi być włączona w klastrze. Jest to wymagane w przypadku wbudowanego języka Python używanego w funkcji .
- Wtyczka języka Python musi być włączona w bazie danych. Jest to wymagane w przypadku wbudowanego języka Python używanego w funkcji .
Składnia
T|
invoke
log_reduce_predict_fl(
,
models_tblModel_name,
reduce_col [,
anomaly_str ])
Dowiedz się więcej o konwencjach składniowych.
Parametry
Nazwa | Typ | Wymagane | Opis |
---|---|---|---|
models_tbl | tabela | ✔️ | Tabela zawierająca modele wygenerowane przez log_reduce_train_fl(). Schemat tabeli powinien mieć wartość (name:string, timestamp: datetime, model:string). |
Model_name | string |
✔️ | Nazwa modelu, który zostanie pobrany z models_tbl. Jeśli tabela zawiera kilka modeli pasujących do nazwy modelu, zostanie użyta najnowsza. |
reduce_col | string |
✔️ | Nazwa kolumny ciągu, do których jest stosowana funkcja. |
anomaly_str | string |
Ten ciąg jest danymi wyjściowymi wierszy, które nie mają pasowanego wzorca w modelu. Wartość domyślna to "ANOMALY". |
Definicja funkcji
Funkcję można zdefiniować, osadzając jej kod jako funkcję zdefiniowaną przez zapytanie lub tworząc ją jako funkcję przechowywaną w bazie danych w następujący sposób:
Zdefiniuj funkcję przy użyciu następującej instrukcji let. Nie są wymagane żadne uprawnienia.
Ważne
Instrukcja let nie może być uruchamiana samodzielnie. Po nim musi znajdować się instrukcja wyrażenia tabelarycznego. Aby uruchomić działający przykład log_reduce_fl()
polecenia , zobacz Przykład.
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.
Przykład
W poniższym przykładzie użyto operatora invoke do uruchomienia funkcji.
Aby użyć funkcji zdefiniowanej przez zapytanie, wywołaj ją po definicji funkcji osadzonej.
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")
Dane wyjściowe
Liczba | LogReduce | przykład |
---|---|---|
239 | 081110 | <NUM NUM><> INFO dfs. DataNode$DataXceiver: Odbieranie bloku blk_<NUM> src: <dest IP: <IP>> 081110 215858 15494 INFO dfs. DataNode$DataXceiver: Odbieranie bloku blk_-7037346755429293022 src: /10.251.43.21:45933: /10.251.43.21:50010 |
231 | 081110 | <NUM NUM><> INFO dfs. DataNode$PacketResponder: odebrano blok blk_<NUM> o rozmiarze <NUM> z <adresu IP> 081110 215858 15485 INFO dfs. DataNode$PacketResponder: odebrano blk_5080254298708411681 67108864 o rozmiarze od /10.251.43.21 |
230 | 081110 | <NUM NUM><> INFO dfs. DataNode$PacketResponder: PacketResponder <NUM> dla bloku blk_<NUM> kończące 081110 215858 15496 INFO dfs. DataNode$PacketResponder: PacketResponder 2 dla zakończenia blk_ bloku 7746692545918257727 |
218 | 081110 | <NUM NUM><> INFO dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap updated: <adres IP> jest dodawany do blk_<NUM> rozmiar <NUM> 081110 215858 27 info dfs. FSNamesystem: BLOCK* NameSystem.addStoredBlock: blockMap zaktualizowano: 10.250.11.85:50010 jest dodawany do rozmiaru 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: Weryfikacja powiodła się dla <*> 081110 215859 13 info dfs. DataBlockScanner: Weryfikacja zakończyła się pomyślnie dla blk_-7244926816084627474 |
Ta funkcja nie jest obsługiwana.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla