pandora python sdk, simple to integrate with pandora


Keywords
qiniu, pandora, sdk
License
Apache-2.0
Install
pip install pdr-python-sdk==1.0.19

Documentation

Python SDK for Pandora 2.0

@qiniu on weibo License
Build Status GitHub release Latest Stable Version Download Times Coverage Status

安装

通过 pip 安装

$ pip install pdr_python_sdk

运行环境

Pandora Python SDK 版本 Python 版本
1.x 3.8, 3.9

使用例子

创建连接并上传数据

from pdr_python_sdk.client import *

params = {
    "scheme": "<http|https>",
    "host": "localhost",
    "port": 80,
    "token": "<YourAccessToken>"
}

conn = connect(**params)
data = [ {"raw": "the raw data 1"}, {"raw": "the raw data 2"} ]
conn.data_upload(data=data, repo="repo_name", sourcetype="sourcetype_name")

使用SPL进行搜索

from pdr_python_sdk.manager import *

# conn 是pandora的客户端
sm = SearchManager(conn)

# 搜索返回原始结构
sm.query("repo=default | stats count() by host", start=0, end=int(time.time() * 1000))

# 搜索返回pandas的dataframe结构
df = sm.query_to_pandas("repo=default | stats count() by host", start=0, end=int(time.time() * 1000))

自定义API

from pdr_python_sdk.api.on_demand_api import OnDemandApi
from pdr_python_sdk.api.response import Response
from pdr_python_sdk.on_demand_action import run


# 自定义API返回 hello world 结果
class HelloWorldApi(OnDemandApi):
    
    def do_handle_data(self, data):
        if not data.contains_request():
            raise Exception('api data should contain request details')
        request = data.request()
        if 'GET' != str.upper(request.method()):
            return Response(405, 'unsupported method [{}]'.format(str.upper(request.method()))).to_string()
        return Response(204, [{"hello": "world"}]).to_string()

自定义算子

from pdr_python_sdk.spl import SplStreamingBatchCommand
from pdr_python_sdk.on_demand_action import run


class Foobar(SplStreamingBatchCommand):
    
    def streaming_handle(self, lines):
        for line in lines:
            line['foo'] = 'bar'
        return lines

更多内容

  • 产品使用文档和API文档可以参考使用文档API文档
  • 关于SDK更多的Demo,可以查看Demo 链接
  • 如果发现了bug, 欢迎提交 issue
  • 如果有功能需求,欢迎提交 issue
  • 如果要提交代码,欢迎提交 pull request

代码许可

Apache-2.0 .详情见 License文件.