乾貨丨Orca: 基於DolphinDB的分佈式pandas接口

Orca項目在DolphinDB之上實現了pandas API,使用戶能更高效地分析處理海量數據。

如果你已經熟悉pandas,你就能通過Orca包,充分利用DolphinDB的高性能和併發,處理海量數據,而不需要額外的學習曲線。如果你已經有現成的pandas代碼,你不需要對已有的pandas代碼進行大量修改,就能遷移到Orca。

目前,Orca項目仍然處於開發階段,並且在快速迭代。我們歡迎你在使用Orca的同時,通過GitHub issues給我們反饋。

Orca的設計理念

Python的第三方庫pandas是一個強大的分析結構化數據的工具,具有高性能、接口易用、易學習的特點,在數據科學和量化金融領域廣受歡迎。然而,當我們開始處理TB級別的海量數據時,單核運行的pandas就顯得力不從心;pandas的高內存佔用也是影響其發揮的限制之一。當我們擁有更多的處理器核,擁有多臺物理機器時,我們會希望充分利用併發的優勢,提高數據處理的效率。

DolphinDB database是一個分佈式數據分析引擎,它可以將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 pd
import dolphindb.orca as pd

pd.connect(MY_HOST, MY_PORT, MY_USERNAME, MY_PASSWORD)複製代碼

更多信息

使用教程和注意事項

Orca與pandas API的詳細差異

Orca訪問DolphinDB分佈式數據庫教程

Orca保存數據教程

用Orca開發量化策略

DolphinDB Python API

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章