Orca我的项目在DolphinDB之上实现了pandas API,使用户能更高效地剖析解决海量数据。
如果你曾经相熟pandas,你就能通过Orca包,充分利用DolphinDB的高性能和并发,解决海量数据,而不须要额定的学习曲线。如果你曾经有现成的pandas代码,你不须要对已有的pandas代码进行大量批改,就能迁徙到Orca。
目前,Orca我的项目依然处于开发阶段,并且在疾速迭代。咱们欢送你在应用Orca的同时,通过GitHub issues给咱们反馈。
Orca的设计理念
Python的第三方库pandas是一个弱小的剖析结构化数据的工具,具备高性能、接口易用、易学习的特点,在数据迷信和量化金融畛域广受欢迎。然而,当咱们开始解决TB级别的海量数据时,单核运行的pandas就显得力不从心;pandas的高内存占用也是影响其施展的限度之一。当咱们领有更多的处理器核,领有多台物理机器时,咱们会心愿充分利用并发的劣势,进步数据处理的效率。
DolphinDB是一个分布式数据分析引擎,它能够将TB级的海量数据存储在多台物理机器上,并能充分利用CPU,对海量数据进行高性能剖析计算。在进行同样性能的计算时,DolphinDB在性能上比pandas快1~2个数量级,并且内存占用通常小于pandas的1/2。但DolphinDB的部署和开发方式都和pandas有显著区别,用户若要从pandas迁徙到DolphinDB,须要对已有代码做出大量批改。侥幸的是,DolphinDB曾经着手开发Orca我的项目——一个基于DolphinDB引擎的pandas DataFrame API的实现。它让用户可能以pandas的编程格调,同时利用DolphinDB的性能劣势,对海量数据进行高效剖析。相比panddas的全内存计算,Orca反对分布式存储和计算。对于同样的数据量,内存占用个别小于pandas的1/2。
Orca的架构
Orca的顶层是pandas API,底层是DolphinDB数据库,通过DolphinDB Python API实现Orca客户端与DolphinDB服务端的通信。Orca的根本工作原理是,在客户端通过Python生成DolphinDB脚本,将脚本通过DolphinDB Python API发送到DolphinDB服务端解析执行。Orca的DataFrame中只存储对应的DolphinDB的表的元数据,真正的存储和计算都是在服务端。
因而,Orca的接口有局部限度:
- Orca的DataFrame中的每个列不能是混合类型,列名也必须是非法DolphinDB变量名。
- 如果DataFrame对应的DolphinDB表是一个分区表,数据存储并非间断,因而就没有RangeIndex的概念,且无奈将一整个Series赋值给一个DataFrame的列。
- 对于DolphinDB分区表,一部分没有分布式版本实现的函数,例如median,Orca暂不反对。
- DolphinDB的空值机制和pandas不同,pandas用float类型的nan作为空值,而DolphinDB的空值是每个类型的最小值。
- DolphinDB是列式存储的数据库。对于pandas接口中,一些axis=columns参数还没有反对。
- 目前无奈解析Python函数,因而,例如
DataFrame.apply
,DataFrame.agg
等函数无奈承受一个Python函数作为参数。
对于Orca和pandas的具体差别,以及由此带来的Orca编程注意事项,请参考Orca应用教程。
装置
Orca反对Linux和Windows零碎,要求Python版本为3.6及以上,pandas版本为0.25.1及以上。
Orca我的项目曾经集成到DolphinDB Python API中。通过pip工具装置DolphinDB Python API,就能够应用Orca。
pip install dolphindb
Orca是基于DolphinDB Python API开发的,因而,你须要有一个DolphinDB服务器,并通过connect
函数连贯到这个服务器,而后运行Orca:
>>> import dolphindb.orca as orca>>> orca.connect(MY_HOST, MY_PORT, MY_USERNAME, MY_PASSWORD)
如果你曾经有现成的pandas程序,能够将pandas的import替换为:
# import pandas as pdimport dolphindb.orca as pdpd.connect(MY_HOST, MY_PORT, MY_USERNAME, MY_PASSWORD)
更多信息
应用教程和注意事项
Orca与pandas API的具体差别
Orca拜访DolphinDB分布式数据库教程
Orca保留数据教程
用Orca开发量化策略
DolphinDB Python API