log_reduce_full_fl()
适用于:✅Azure 数据资源管理器
函数 log_reduce_full_fl()
在半结构化文本列(例如日志行)中查找通用模式,并根据提取的模式对这些行进行聚类。 该函数的算法和大部分参数与 log_reduce_fl() 相同。 但是,log_reduce_fl()
输出的是模式摘要表,而此函数则是输出一个完整的表,其中的每行包含模式和参数。
先决条件
- 必须在群集上启用 Python 插件。 这是函数中使用的内联 Python 所必需的。
语法
T |
invoke
log_reduce_full_fl(
reduce_col [,
pattern_col [,
parameters_col [,
use_logram [,
use_drain [,
custom_regexes [,
custom_regexes_policy [,
delimiters [,
similarity_th [,
tree_depth [,
trigram_th [,
bigram_th ]]]]]]]]]]])
详细了解语法约定。
参数
以下参数说明是摘要。 有关详细信息,请参阅有关算法的详细信息部分。
名称 | 类型 | 必需 | 说明 |
---|---|---|---|
reduce_col | string |
✔️ | 函数所应用到的字符串列的名称。 |
pattern_col | string |
✔️ | 用于填充此模式的字符串列的名称。 |
parameters_col | string |
✔️ | 用于填充此模式的参数的字符串列的名称。 |
use_logram | bool |
启用或禁用 Logram 算法。 默认值为 true 。 |
|
use_drain | bool |
启用或禁用 Drain 算法。 默认值为 true 。 |
|
custom_regexes | dynamic |
一个动态数组,其中包含要在每个输入行中搜索的正则表达式和替换符号对,这些符号将替换为各自匹配的符号。 默认值为 dynamic([]) 。 默认正则表达式表替换数字、IP 和 GUID。 |
|
custom_regexes_policy | string |
“prepend”、“append”或“replace”。 控制 custom_regexes 是在前面附加、在后面追加还是替换默认项。 默认值为“prepend”。 | |
delimiters | dynamic |
包含分隔符字符串的动态数组。 默认值为 dynamic([" "]) ,即,将空格定义为唯一一个字符分隔符。 |
|
similarity_th | real |
Drain 算法使用的相似性阈值。 增大 similarity_th 会产生更精细的聚类。 默认值为 0.5。 如果禁用了 Drain,则此参数不起作用。 | |
tree_depth | int |
增大 tree_depth 可以改进 Drain 算法的运行时间,但可能会降低其准确度。 默认值为 4。 如果禁用了 Drain,则此参数不起作用。 | |
trigram_th | int |
减小 trigram_th 会增大 Logram 用通配符替换标记的可能性。 默认值为 10。 如果禁用了 Logram,则此参数不起作用。 | |
bigram_th | int |
减小 bigram_th 会增大 Logram 用通配符替换标记的可能性。 默认值为 15。 如果禁用了 Logram,则此参数不起作用。 |
函数定义
可以通过将函数的代码嵌入为查询定义的函数,或将其创建为数据库中的存储函数来定义函数,如下所示:
使用以下 let 语句定义函数。 不需要任何权限。
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.
示例
以下示例使用 invoke 运算符运行函数。
若要使用查询定义的函数,请在嵌入的函数定义后调用它。
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
输出
数据 | 模式 | 参数 |
---|---|---|
081110 | 215858 | 15485 INFO dfs.DataNode$PacketResponder: 从 /10.251.43.21 081110 接收到大小为 67108864 的块 blk_5080254298708411681 <NUM><NUM> INFO dfs.DataNode$PacketResponder: 从 <IP> 接收到大小为 <NUM> 的块 blk_<NUM> "{""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: 正在接收块 blk_-7037346755429293022 src: /10.251.43.21:45933 dest: /10.251.43.21:50010 081110 <NUM><NUM> INFO dfs.DataNode$DataXceiver: 正在接收块 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: 块 blk_-7746692545918257727 的 PacketResponder 2 正在终止 081110 <NUM><NUM> INFO dfs.DataNode$PacketResponder: 块 blk_<NUM> 的 PacketResponder <NUM> 正在终止 "{""parameter_0"": ""215858"", ""parameter_1"": ""15496"", ""parameter_2"": ""2"", ""parameter_3"": ""-7746692545918257727""}" |
081110 | 215858 | 15496 INFO dfs.DataNode$PacketResponder: 从 /10.251.107.227 081110 接收到大小为 67108864 的块 blk_-7746692545918257727 <NUM><NUM> INFO dfs.DataNode$PacketResponder: 从 <IP> 接收到大小为 <NUM> 的块 blk_<NUM> "{""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: 正在接收块 blk_-8578644687709935034 src: /10.251.107.227:39600 dest: /10.251.107.227:50010 081110 <NUM><NUM> INFO dfs.DataNode$DataXceiver: 正在接收块 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: 正在接收块 blk_722881101738646364 src: /10.251.75.79:58213 dest: /10.251.75.79:50010 081110 <NUM><NUM> INFO dfs.DataNode$DataXceiver: 正在接收块 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: 块 blk_-7110736255599716271 的 PacketResponder 2 正在终止 081110 <NUM><NUM> INFO dfs.DataNode$PacketResponder: 块 blk_<NUM> 的 PacketResponder <NUM> 正在终止 "{""parameter_0"": ""215858"", ""parameter_1"": ""15517"", ""parameter_2"": ""2"", ""parameter_3"": ""-7110736255599716271""}" |
081110 | 215858 | 15517 INFO dfs.DataNode$PacketResponder: 从 /10.251.42.246 081110 接收到大小为 67108864 的块 blk_-7110736255599716271 <NUM><NUM> INFO dfs.DataNode$PacketResponder: 从 <IP> 接收到大小为 <NUM> 的块 blk_<NUM> "{""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: 正在接收块 blk_7257432994295824826 src: /10.251.26.8:41803 dest: /10.251.26.8:50010 081110 <NUM><NUM> INFO dfs.DataNode$DataXceiver: 正在接收块 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: 正在接收块 blk_-7771332301119265281 src: /10.251.43.210:34258 dest: /10.251.43.210:50010 081110 <NUM><NUM> INFO dfs.DataNode$DataXceiver: 正在接收块 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""}" |