log_reduce_full_fl()
Met de functie log_reduce_full_fl()
worden algemene patronen gevonden in semi-gestructureerde tekstkolommen, zoals logboeklijnen, en worden de lijnen geclusterd op basis van de geëxtraheerde patronen. Het algoritme van de functie en de meeste parameters zijn identiek aan log_reduce_fl(). Er wordt echter log_reduce_fl()
een patronenoverzichtstabel uitgevoerd, terwijl deze functie een volledige tabel met het patroon en de parameters per regel uitvoert.
Vereisten
- De Python-invoegtoepassing moet zijn ingeschakeld op het cluster. Dit is vereist voor de inline Python die in de functie wordt gebruikt.
- De Python-invoegtoepassing moet zijn ingeschakeld voor de database. Dit is vereist voor de inline Python die in de functie wordt gebruikt.
Syntax
T|
invoke
log_reduce_full_fl(
reduce_col [,
pattern_col [,
parameters_col [,
use_logram [,
use_drain [,
custom_regexes [,
custom_regexes_policy [,
scheidingstekens [,
similarity_th [,
tree_depth [,
trigram_th [,
bigram_th ]]]]]]]]]]])
Meer informatie over syntaxisconventies.
Parameters
De volgende beschrijving van parameters is een samenvatting. Zie de sectie Meer informatie over het algoritme voor meer informatie.
Naam | Type | Vereist | Beschrijving |
---|---|---|---|
reduce_col | string |
✔️ | De naam van de tekenreekskolom waarop de functie wordt toegepast. |
pattern_col | string |
✔️ | De naam van de tekenreekskolom om het patroon te vullen. |
parameters_col | string |
✔️ | De naam van de tekenreekskolom om de parameters van het patroon te vullen. |
use_logram | bool |
Schakel het Logram-algoritme in of uit. De standaardwaarde is true . |
|
use_drain | bool |
Schakel het algoritme Drain in of uit. De standaardwaarde is true . |
|
custom_regexes | dynamic |
Een dynamische matrix met paren van reguliere expressies en vervangende symbolen die in elke invoerrij moeten worden doorzocht en vervangen door het bijbehorende overeenkomende symbool. De standaardwaarde is dynamic([]) . De standaard regex-tabel vervangt getallen, IP's en GUID's. |
|
custom_regexes_policy | string |
Ofwel 'prepend', 'append' of 'replace'. Hiermee bepaalt u of custom_regexes de standaard worden voorbereid/toegevoegd/vervangen. De standaardwaarde is 'prepend'. | |
scheidingstekens | dynamic |
Een dynamische matrix met tekenreeksen voor scheidingstekens. Standaardwaarde is dynamic([" "]) , waarmee spatie wordt gedefinieerd als het enige scheidingsteken voor tekens. |
|
similarity_th | real |
Drempelwaarde voor gelijkenis, die wordt gebruikt door het algoritme Drain. Het verhogen van similarity_th resulteert in meer verfijnde clusters. De standaardwaarde is 0,5. Als Drain is uitgeschakeld, heeft deze parameter geen effect. | |
tree_depth | int |
Het verhogen van tree_depth verbetert de runtime van het Drain-algoritme, maar kan de nauwkeurigheid verminderen. De standaardwaarde is 4. Als Drain is uitgeschakeld, heeft deze parameter geen effect. | |
trigram_th | int |
Het verminderen van trigram_th vergroot de kans dat Logram tokens vervangt door jokertekens. De standaardwaarde is 10. Als Logram is uitgeschakeld, heeft deze parameter geen effect. | |
bigram_th | int |
Het verminderen van bigram_th vergroot de kans dat Logram tokens vervangt door jokertekens. De standaardwaarde is 15. Als Logram is uitgeschakeld, heeft deze parameter geen effect. |
Functiedefinitie
U kunt de functie als volgt definiëren door de code in te sluiten als een door een query gedefinieerde functie of door deze te maken als een opgeslagen functie in uw database:
Definieer de functie met behulp van de volgende let-instructie. Er zijn geen machtigingen vereist.
Belangrijk
Een let-instructie kan niet zelfstandig worden uitgevoerd. Deze moet worden gevolgd door een tabellaire expressie-instructie. Zie Voorbeeld als u een werkend voorbeeld van log_reduce_fl()
wilt uitvoeren.
let log_reduce_full_fl=(tbl:(*), reduce_col:string, pattern_col:string, parameters_col:string,
use_logram:bool=True, use_drain:bool=True, custom_regexes: dynamic = dynamic([]), custom_regexes_policy: string = 'prepend',
delimiters:dynamic = dynamic(' '), similarity_th:double=0.5, tree_depth:int = 4, trigram_th:int=10, bigram_th:int=15)
{
let default_regex_table = pack_array('(/|)([0-9]+\\.){3}[0-9]+(:[0-9]+|)(:|)', '<IP>',
'([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})', '<GUID>',
'(?<=[^A-Za-z0-9])(\\-?\\+?\\d+)(?=[^A-Za-z0-9])|[0-9]+$', '<NUM>');
let kwargs = bag_pack('reduced_column', reduce_col, 'delimiters', delimiters,'output_column', pattern_col, 'parameters_column', parameters_col,
'trigram_th', trigram_th, 'bigram_th', bigram_th, 'default_regexes', default_regex_table,
'custom_regexes', custom_regexes, 'custom_regexes_policy', custom_regexes_policy, 'tree_depth', tree_depth, 'similarity_th', similarity_th,
'use_drain', use_drain, 'use_logram', use_logram, 'save_regex_tuples_in_output', True, 'regex_tuples_column', 'RegexesColumn',
'output_type', 'full');
let code = ```if 1:
from log_cluster import log_reduce
result = log_reduce.log_reduce(df, kargs)
```;
tbl
| evaluate python(typeof(*), code, kwargs)
};
// Write your query to use the function here.
Voorbeeld
In het volgende voorbeeld wordt de operator aanroepen gebruikt om de functie uit te voeren.
Als u een querygedefinieerde functie wilt gebruiken, roept u deze aan na de definitie van de ingesloten functie.
let log_reduce_full_fl=(tbl:(*), reduce_col:string, pattern_col:string, parameters_col:string,
use_logram:bool=True, use_drain:bool=True, custom_regexes: dynamic = dynamic([]), custom_regexes_policy: string = 'prepend',
delimiters:dynamic = dynamic(' '), similarity_th:double=0.5, tree_depth:int = 4, trigram_th:int=10, bigram_th:int=15)
{
let default_regex_table = pack_array('(/|)([0-9]+\\.){3}[0-9]+(:[0-9]+|)(:|)', '<IP>',
'([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})', '<GUID>',
'(?<=[^A-Za-z0-9])(\\-?\\+?\\d+)(?=[^A-Za-z0-9])|[0-9]+$', '<NUM>');
let kwargs = bag_pack('reduced_column', reduce_col, 'delimiters', delimiters,'output_column', pattern_col, 'parameters_column', parameters_col,
'trigram_th', trigram_th, 'bigram_th', bigram_th, 'default_regexes', default_regex_table,
'custom_regexes', custom_regexes, 'custom_regexes_policy', custom_regexes_policy, 'tree_depth', tree_depth, 'similarity_th', similarity_th,
'use_drain', use_drain, 'use_logram', use_logram, 'save_regex_tuples_in_output', True, 'regex_tuples_column', 'RegexesColumn',
'output_type', 'full');
let code = ```if 1:
from log_cluster import log_reduce
result = log_reduce.log_reduce(df, kargs)
```;
tbl
| evaluate python(typeof(*), code, kwargs)
};
//
// Finding common patterns in HDFS logs, a commonly used benchmark for log parsing
//
HDFS_log
| take 100000
| extend Patterns="", Parameters=""
| invoke log_reduce_full_fl(reduce_col="data", pattern_col="Patterns", parameters_col="Parameters")
| take 10
Uitvoer
gegevens | Patronen | Parameters |
---|---|---|
081110 | 215858 | 15485 INFO dfs. DataNode$PacketResponder: Ontvangen blok blk_5080254298708411681 van grootte 67108864 van /10.251.43.21 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: Ontvangen blok blk_<NUM> van grootte <NUM> van <IP> "{"parameter_0"": ""215858"", ""parameter_1"": ""15485"", ""parameter_2""": ""5080254298708411681"", ""parameter_3""": ""67108864"", ""parameter_4"": ""/10.251.43.21""}" |
081110 | 215858 | 15494 INFO dfs. DataNode$DataXceiver: Ontvangend blok blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Ontvangen van blok blk_<NUM> src: <IP> dest: <IP> "{"parameter_0"": ""215858"", ""parameter_1"": ""15494"", ""parameter_2"": ""-7037346755429293022"", ""parameter_3""": ""/10.251.43.21:45933"", ""parameter_4"": ""/10.251.43.21:50010""}" |
081110 | 215858 | 15496 INFO dfs. DataNode$PacketResponder: PacketResponder 2 voor blok blk_-7746692545918257727 die 081110 <NUM><NUM> INFO dfs beëindigen. DataNode$PacketResponder: PacketResponder <NUM> for block blk_<NUM> terminating "{"parameter_0"": ""215858"", ""parameter_1"": ""15496"", ""parameter_2"": ""2"", ""parameter_3"": ""-7746692545918257727""}" |
081110 | 215858 | 15496 INFO dfs. DataNode$PacketResponder: Blok blk_-7746692545918257727 van grootte 67108864 ontvangen van /10.251.107.227 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: Ontvangen blok blk_<NUM> van grootte <NUM> van <IP> "{""parameter_0"": ""215858"", ""parameter_1"": ""15496"", ""parameter_2""": ""-7746692545918257727"", ""parameter_3""": ""67108864"", ""parameter_4"": ""/10.251.107.227""}" |
081110 | 215858 | 15511 INFO dfs. DataNode$DataXceiver: Ontvangend blok blk_-8578644687709935034 src: /10.251.107.227:39600 dest: /10.251.107.227:50010 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Ontvangend blok blk_<NUM> src: <IP dest> : <IP> "{"parameter_0"": ""215858"", ""parameter_1"": ""15511"", ""parameter_2"": ""-8578644687709935034"", ""parameter_3"": ""/10.251.107.227:39600"", ""parameter_4""": ""/10.251.107.227:50010"}" |
081110 | 215858 | 15514 INFO dfs. DataNode$DataXceiver: Ontvangend blok blk_722881101738646364 src: /10.251.75.79:58213 dest: /10.251.75.79:50010 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Ontvangend blok blk_<NUM> src: <IP> dest: <IP> "{"parameter_0"": ""215858"", ""parameter_1"": ""15514"", ""parameter_2"": ""722881101738646364"", ""parameter_3"": ""/10.251.75.79:58213"", ""parameter_4"": ""/10.251.75.79:50010""}" |
081110 | 215858 | 15517 INFO dfs. DataNode$PacketResponder: PacketResponder 2 voor blok blk_-7110736255599716271 afsluit 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: PacketResponder <NUM> for block blk_<NUM> terminating "{""parameter_0"": ""215858"", ""parameter_1"": ""15517"", ""parameter_2"": ""2"", ""parameter_3"": ""-7110736255599716271"""}" |
081110 | 215858 | 15517 INFO dfs. DataNode$PacketResponder: Ontvangen blok blk_-7110736255599716271 van grootte 67108864 van /10.251.42.246 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: Ontvangen blok blk_<NUM> van grootte <NUM> van <IP> {""parameter_0"": ""215858"", ""parameter_1"": ""15517"", ""parameter_2""": ""-7110736255599716271"", ""parameter_3""": ""67108864"", ""parameter_4"": ""/10.251.42.246""}" |
081110 | 215858 | 15533 INFO dfs. DataNode$DataXceiver: Ontvangend blok blk_7257432994295824826 src: /10.251.26.8:41803 dest: /10.251.26.8:50010 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Ontvangend blok blk_<NUM> src: <IP> dest: <IP> "{"parameter_0"": ""215858"", ""parameter_1"": ""15533"", ""parameter_2"": ""7257432994295824826"", ""parameter_3"": ""/10.251.26.8:41803"", ""parameter_4"": ""/10.251.26.8:50010""}" |
081110 | 215858 | 15533 INFO dfs. DataNode$DataXceiver: Ontvangend blok blk_-7771332301119265281 src: /10.251.43.210:34258 dest: /10.251.43.210:50010 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Ontvangend blok blk_<NUM> src: <IP> dest: <IP> "{"parameter_0"": ""215858"", ""parameter_1"": ""15533"", ""parameter_2"": ""-7771332301119265281"", ""parameter_3"": ""/10.251.43.210:34258"", ""parameter_4"": ""/10.251.43.210:50010""}" |
Deze functie wordt niet ondersteund.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor