Arrow

Apache Arrow 是一种跨平台的内存数据格式,被设计为一种内存中的列式数据格式,可以高效地存储和传输大规模数据集,同时提供了高性能的数据操作功能。在引入 Arrow 插件之前,DolphinDB 与 API 进行数据交互时可以通过 PICKLE 或者 DDB 协议进行序列化。引入 Arrow 插件后,DolphinDB 数据,可以通过 ARROW 协议转换为 Arrow 格式进行传输,从而使得 DolphinDB 与 API 之间的数据传输更高效。

注意:

  1. 自 DolphinDB 2.00.11 版本起,formatArrow 插件更名为 Arrow。
  2. 自 2.00.12 版本起,Arrow 插件可从插件市场直接下载,允许执行 loadPlugin 函数加载。2.00.11 及之前版本必须调用 loadFormatPlugin 函数才能正常加载。loadFormatPlugin 函数使用方式同 loadPlugin 函数,但只能用来加载数据格式插件。

安装插件

版本要求

DolphinDB Server:2.00.12 及更高版本。支持 Linux x86-64,Windows x86-64。

安装步骤

  1. 在 DolphinDB 客户端中使用 listRemotePlugins 命令查看插件仓库中的插件信息。

    注意:仅展示当前操作系统和 server 版本支持的插件。若无预期插件,可自行编译(请自行选择对应分支下的插件)或在 DolphinDB 用户社区进行反馈。

    login("admin", "123456")
    listRemotePlugins()
  2. 使用 installPlugin 命令完成插件安装。

    installPlugin("arrow")
  3. 使用 loadPlugin 命令加载插件。

    loadPlugin("arrow")

接口说明

Arrow 插件不提供用户可调用函数接口。

loadPlugin 函数返回的接口仅供 DolphinDB 内部调用,不支持用户通过脚本调用。

数据类型转换说明

Arrow 插件目前仅支持向 API 单向传输数据,不支持接收从 API 发送的 Arrow 格式数据。

目前仅 Python API 可以通过 PROTOCOL_ARROW 协议下载 Arrow 格式数据。

DolphinDB → Arrow

目前仅支持序列化传输 DolphinDB Table 为 Arrow Table。DolphinDB 与 Arrow 数据类型转换关系如下:

DolphinDBArrow
BOOLboolean
CHARint8
SHORTint16
INTint32
LONGint64
DATEdate32
MONTHdate32
TIMEtime32(ms)
MINUTEtime32(s)
SECONDtime32(s)
DATETIMEtimestamp(s)
TIMESTAMPtimestamp(ms)
NANOTIMEtime64(ns)
NANOTIMESTAMPtimestamp(ns)
DATEHOURtimestamp(s)
FLOATfloat32
DOUBLEfloat64
SYMBOLdictionary(int32, utf8)
STRINGutf8
IPADDRutf8
UUIDfixed_size_binary(16)
INT128fixed_size_binary(16)
BLOBlarge_binary
DECIMAL32(X)decimal128(38, X)
DECIMAL64(X)decimal128(38, X)

注意:

  • 同时支持以上除了 DECIMAL 外的 ArrayVector 类型。
  • 自 2.00.11 版本起,下载 UUID / INT128 后的字节顺序从反转修正为和上传时的顺序保持一致。

使用示例

DolphinDB server

login("admin", "123456");
loadPlugin("arrow");

Python API

import dolphindb as ddb
import dolphindb.settings as keys
s = ddb.session("192.168.1.113", 8848, "admin", "123456", protocol=keys.PROTOCOL_ARROW)
pat = s.run("table(1..10 as a)")

print(pat)
-------------------------------------------
pyarrow.Table
a: int32
----
a: [[1,2,3,4,5,6,7,8,9,10]]

注意:现版本中 DolphinDB 服务器不支持使用 Arrow 协议时开启压缩。