用于scidb流的python库
scidb-strm的Python项目详细描述
要求
scidb16.9或更新的
apache arrow0.6.0或更新版本。
python2.7.x,3.4.x,3.5.x,3.6.x或更新版本。
必需的python包:
dill feather-format pandas
注
早于0.8.0的apache arrow版本包含一个可能 影响流用户。错误显示在大于^{tt8}的块上$ 具有空值的记录。有关详细信息,请参阅完整的错误 说明here。这个虫子 在阿帕奇工作过 箭头版本0.8.0。
安装
安装最新版本:
pip install scidb-strm
从github安装开发版本:
pip install git+http://github.com/paradigm4/stream.git#subdirectory=py_pkg
python库需要安装在scidb服务器上。这个 如果python代码是 从客户端发送到服务器。
scidb strm python api和示例
安装后,scidb strm可以使用 import scidbstrm。图书馆提供了一个高层次和低层次的访问 提供给scidbstream运算符以及发送python的能力 scidb服务器的代码。
高级访问由函数map:
- map(map_fun, finalize_fun=None)
- 读取scidb块。对于每个块,调用map_fun并将其流化 结果返回给SCIDB。如果提供了finalize_fun,请在之后调用它 所有块都已处理。
一个简洁的例子见0-iquery.txt 使用map函数。
请参见1-map-finalize.py以获取示例 使用map函数。必须将python脚本复制到 scidb实例。
python代码可以发送到scidb服务器以使用 pack_func和read_func函数:
- pack_func(func)
- 序列化python函数,用作upload_data中的input或 load运算符。
- read_func()
- 从scidb读取和反序列化函数。
请参见2-pack-func.py以获取 使用pack_func和read_func函数。
低级访问由read和write函数提供:
- read()
- 从scidb读取数据块。返回pandas数据帧或无数据帧。
- write(df=None)
- 将数据块写入scidb。
有关使用 函数read和write。python脚本必须是 复制到scidb实例上。
python解释器的方便调用在 python_map变量,设置为:
python -uc "import scidbstrm; scidbstrm.map(scidbstrm.read_func())"
最后,请参见4-machine-learning.py 对于一个更复杂的例子 机器放大(预处理、训练和预测)。
调试python代码
调试作为stream运算符一部分执行的python代码时 不要使用print函数。stream运算符 使用stdout与python进程通信。那print 函数将输出写入stdout。所以,使用print函数 会干扰进程间的通信。
相反,使用^{tt28}将调试输出写入stderr。$ 功能。例如:
import sys x = [1, 2, 3] sys.stderr.write("{}\n".format(x))
输出被写入每个 实例,例如:
/opt/scidb/18.1/DB-scidb/0/0/scidb-stderr.log /opt/scidb/18.1/DB-scidb/0/1/scidb-stderr.log
如果使用在默认位置安装的scidb18.1,并且 配置了一个服务器和两个实例。