Sdílet prostřednictvím


log_reduce_full_fl()

Funkce log_reduce_full_fl() najde běžné vzory v částečně strukturovaných textových sloupcích, jako jsou například řádky protokolu, a shlukuje čáry podle extrahovaných vzorů. Algoritmus funkce a většina parametrů jsou identické s log_reduce_fl(). log_reduce_fl() Výstupem je však souhrnná tabulka vzorů, zatímco tato funkce vypíše úplnou tabulku obsahující vzor a parametry pro každý řádek.

Požadavky

  • V clusteru musí být povolený modul plug-in Pythonu. To se vyžaduje pro vložený Python použitý ve funkci.
  • V databázi musí být povolený modul plug-in Pythonu. To se vyžaduje pro vložený Python použitý ve funkci.

Syntax

T|invokelog_reduce_full_fl(reduce_col [,pattern_col [,parameters_col [,use_logram [,use_drain [,custom_regexes [,custom_regexes_policy[,similarity_th [,,tree_depth [,trigram_th [,bigram_th ]]]]]]]]]]])

Přečtěte si další informace o konvencích syntaxe.

Parametry

Následující popis parametrů je souhrn. Další informace najdete v části Další informace o algoritmu .

Název Typ Vyžadováno Popis
reduce_col string ✔️ Název sloupce řetězce, na který je funkce použita.
pattern_col string ✔️ Název sloupce řetězce, který má vzor naplnit.
parameters_col string ✔️ Název sloupce řetězce pro naplnění parametrů vzoru.
use_logram bool Povolte nebo zakažte algoritmus Logram. Výchozí hodnota je true.
use_drain bool Povolte nebo zakažte algoritmus vyprázdnění. Výchozí hodnota je true.
custom_regexes dynamic Dynamické pole obsahující dvojice regulárních výrazů a náhradních symbolů, které se mají prohledávat v každém vstupním řádku a nahradit odpovídajícími symboly. Výchozí hodnota je dynamic([]). Výchozí tabulka regex nahrazuje čísla, IP adresy a identifikátory GUID.
custom_regexes_policy string Buď "prepend", "append" nebo "replace". Určuje, jestli jsou custom_regexes prepend/append/replace the default. Výchozí hodnota je "prepend".
Oddělovače dynamic Dynamické pole obsahující řetězce oddělovače. Výchozí hodnota je dynamic([" "]), definující mezeru jako jediný oddělovač znaků.
similarity_th real Prahová hodnota podobnosti, kterou používá algoritmus odtoku. Zvýšení similarity_th vede ke zpřesnění clusterů. Výchozí hodnota je 0,5. Pokud je možnost Drain zakázaná, nemá tento parametr žádný vliv.
tree_depth int Zvýšení tree_depth zlepšuje modul runtime algoritmu Drain, ale může snížit jeho přesnost. Výchozí hodnota je 4. Pokud je možnost Drain zakázaná, nemá tento parametr žádný vliv.
trigram_th int Snížením trigram_th se zvyšuje pravděpodobnost, že Logram nahradí tokeny zástupnými cardy. Výchozí hodnota je 10. Pokud je Logram zakázaný, nemá tento parametr žádný vliv.
bigram_th int Snížení bigram_th zvyšuje pravděpodobnost, že Logram nahradí tokeny zástupnými cardy. Výchozí hodnota je 15. Pokud je Logram zakázaný, nemá tento parametr žádný vliv.

Definice funkce

Funkci můžete definovat tak, že buď vložíte její kód jako funkci definovanou dotazem, nebo ji vytvoříte jako uloženou funkci v databázi, a to následujícím způsobem:

Definujte funkci pomocí následujícího příkazu let. Nejsou vyžadována žádná oprávnění.

Důležité

Příkaz let nemůže běžet samostatně. Za ním musí následovat příkaz tabulkového výrazu. Pokud chcete spustit funkční příklad , log_reduce_fl()podívejte se na příklad.

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.

Příklad

Následující příklad používá operátor invoke ke spuštění funkce.

Pokud chcete použít funkci definovanou dotazem, vyvoláte ji po definici vložené funkce.

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

Výstup

data Vzory Parametry
081110 215858 15485 INFO dfs. DataNode$PacketResponder: Přijatý blok blk_5080254298708411681 velikosti 67108864 z /10.251.43.21 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: Přijatý blok blk_<NUM> velikosti <NUM> z <IP> adresy {""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: Příjem bloku blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Příjem bloku 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 pro block blk_-7746692545918257727 ukončující 081110 <NUM NUM><> INFO dfs. DataNode$PacketResponder: PacketResponder <NUM> pro blok blk_<NUM> ukončující "{""parameter_0""": ""215858"", ""parameter_1"": ""15496"", ""parameter_2"": ""2"", ""parameter_3"": ""-7746692545918257727""}"
081110 215858 15496 INFO dfs. DataNode$PacketResponder: Přijatý blok blk_-7746692545918257727 velikosti 67108864 z /10.251.107.227 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: Přijatý blok blk_<NUM> velikosti <NUM> z <IP> adresy {""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: Příjem bloku blk_-8578644687709935034 src: /10.251.107.227:39600 dest: /10.251.107.227:50010 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Příjem 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: Příjem bloku blk_722881101738646364 src: /10.251.75.79:58213 dest: /10.251.75.79:50010 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Příjem bloku 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 pro blokovou blk_-7110736255599716271 ukončující 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: PacketResponder <NUM> pro blok blk_<NUM> ukončující "{"""parameter_0"": ""215858"", ""parameter_1"": ""15517"", ""parameter_2"": ""2"", ""parameter_3"": ""-7110736255599716271""}"
081110 215858 15517 INFO dfs. DataNode$PacketResponder: Přijatý blok blk_-7110736255599716271 velikosti 67108864 z /10.251.42.246 081110 <NUM><NUM> INFO dfs. DataNode$PacketResponder: Přijatý blok blk_<NUM> velikosti <NUM> z <IP> adresy {""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: Příjem bloku blk_7257432994295824826 src: /10.251.26.8:41803 dest: /10.251.26.8:50010 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Příjem 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: Příjem bloku blk_-7771332301119265281 src: /10.251.43.210:34258 dest: /10.251.43.210:50010 081110 <NUM><NUM> INFO dfs. DataNode$DataXceiver: Příjem bloku 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""}"

Tato funkce není podporovaná.