Pandora支持 SPL 高级搜索分析语法,以管道符的形式表达数据分析的过程,每一步使用对应的SPL搜索命令完成相应的数据分析。平台内置提供了 100 多种命令用于数据处理和建模过程,可以实现数据搜索、关联、分析、可视化等操作。
尽管如此,这些现有命令可能无法满足特定分析场景。为了拓展SPL的能力,除了平台自带的SPL算子外,可以通过插件的形式实现自定义算子的逻辑。自定义算子是用户定义的SPL搜索命令,用于扩展用户的特定分析需求。自定义算子SDK提供开发并将自定义算子加入到算子库的功能,下面以Python SDK为例说明如何进行自定义算子开发,实现数据的灵活分析。
自定义算子类型
用户可以自定义的算子类型如下:
算子类型 | 描述 | 示例 | 计算方式 |
---|---|---|---|
流式命令 | 对搜索返回的事件数据逐个应用SPL命令进行处理 | eval,fields,rex,rename,replace,where,search | 集中式/分布式 |
转换统计命令 | 将搜索返回的事件转换为用于统计目的的数值 | chart,stats,rare,timechart,top | 集中式/分布式 |
搜索导出 | 将搜索分析结果导出到第三方平台 | export | 集中式/分布式 |
下载APP应用模板
点击下载模版应用,解压后里面有APP相关的各个配置文件。
配置自定义算子的配置项
在demo/resources/customoperators 目录下新建一个sample.json文件,文件配置如下:
{
"name":"sample", // 算子的名字
"type":"centralized", // 算子的类型,目前只支持集中式算子,在该算子进行运算时只能在一台服务器进行运算
"env":"python3", // 算子实现的语言
"filename":"sample.py" // 算子实现的文件名,该文件存储在bins目录下
}
编写自定义算子脚本
详细内容参考SDK帮助手册 获取 Python SDK,然后在bins目录下创建sample.py 脚本放置在demo/bins 目录下,脚本内容为:
#!/usr/bin/env python
import sys
from pdr_python_sdk.on_demand_action import run
from pdr_python_sdk.spl import *
# 为所有数据增加一列 'foo',值为 'bar'
class Foobar(SplStreamingBatchCommand):
def streaming_handle(self, lines):
for line in lines:
line['foo'] = 'bar'
return lines
if __name__ == '__main__':
run(Foobar, sys.argv, sys.stdin.buffer, sys.stdout.buffer)
打包并安装APP
将demo目录打包成sample.tar.gz
tar -zcvf sample.tar.gz demo
去pandora 2.0的应用商店的“应用管理”界面上传sample.tar.gz
执行命令
去搜索分析界面执行“* | sample” 命令,能够看到每条日志都会新增"foo": “bar” 这样的字段
文档反馈
(如有产品使用问题,请提交工单)