一行程式碼,Pandas秒變分散式,快速處理TB級資料
夏乙 發自 凹非寺
量子位 出品 | 公眾號 QbitAI
剛剛在Pandas上為十幾KB的資料做好了測試寫好了處理指令碼,上百TB的同類大型資料集擺到了面前。這時候,你可能面臨著一個兩難的選擇:
繼續用Pandas?可能會相當慢,上百TB資料不是它的菜。
(ಥ_ಥ) 然而,Spark啊分散式啊什麼的,學習曲線好陡峭哦~在Pandas裡寫的處理指令碼都作廢了好桑心哦~
別灰心,你可能真的不需要Spark了。
加州大學伯克利分校RiseLab最近在研究的Pandas on Ray,就是為了讓Pandas執行得更快,能搞定TB級資料而生的。這個DataFrame庫想要滿足現有Pandas使用者不換API,就提升效能、速度、可擴充套件性的需求。
研究團隊說,只需要替換一行程式碼,8核機器上的Pandas查詢速度就可以提高4倍。
其實也就是用一個API替換了Pandas中的部分函式,這個API基於Ray執行。Ray是伯克利年初推出的分散式AI框架,能用幾行程式碼,將家用電腦上的原型演算法轉換成適合大規模部署的分散式計算應用。
Pandas on Ray的效能雖說比不上另一個分散式DataFrame庫Dask,但更容易上手,用起來和Pandas幾乎沒有差別。使用者不需要懂分散式計算,也不用學一個新的API。
與Dask不同的是,Ray使用了Apache Arrow裡的共享記憶體物件儲存,不需要對資料進行序列化和複製,就能跨程式通訊。
△ 在8核32G記憶體的AWS m5.2xlarge例項上,Ray、Dask和Pandas讀取csv的效能對比
它將Pandas包裹起來並透明地把資料和計算分佈出去。使用者不需要知道他們的系統或者叢集有多少核,也不用指定如何分配資料,可以繼續用之前的Pandas notebook。
前面說過,使用Pandas on Ray需要替換一行程式碼,其實就是換掉匯入語句。
# import pandas as pd
import ray.dataframe as pd
這時候你應該看到:
初始化完成,Ray自動識別了你機器上可用的核心,接下來的用法,就和Pandas一樣了。
Pandas on Ray目前還處於早期,實現了Pandas的一部分功能。以一個股票波動的資料集為例,它所支援的Pandas功能包括檢查資料、查詢上漲的天數、按日期索引、按日期查詢、查詢股票上漲的所有日期等等。
這個專案的最終目標是在Ray上完整實現Pandas API的功能,讓使用者可以在雲上用Pandas。
目前,伯克利RiseLab的研究員們已經用45天時間,實現了Pandas DataFrame API的25%。
革命尚未成功,專案仍在繼續。這些人都在為之努力:
Devin Petersohn, Robert Nishihara, Philipp Moritz, Simon Mo, Kunal Gosar, Helen Che, Harikaran Subbaraj, Peter Veerman, Rohan Singh, Joseph Gonzalez, Ion Stoica, Anthony Joseph
更深入地瞭解Pandas on Ray請看RiseLab部落格原文:
https://rise.cs.berkeley.edu/blog/pandas-on-ray/
試用Pandas on Ray請參考這個文件:
https://rise.cs.berkeley.edu/blog/pandas-on-ray/
給Ray團隊提要求請到GitHub開issue:
https://github.com/ray-project/ray/issues
如果對Ray感興趣,可以讀一讀他們的論文:
https://arxiv.org/abs/1712.05889
— 完 —
加入社群
量子位AI社群15群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot6入群;
此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進群請加小助手微訊號qbitbot6,並務必備註相應群的關鍵詞~通過稽核後我們將邀請進群。(專業群稽核較嚴,敬請諒解)
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話介面,回覆“招聘”兩個字。
量子位 QbitAI · 頭條號簽約作者
վ'ᴗ' ի 追蹤AI技術和產品新動態
相關文章
- 資料處理--pandas問題
- Python資料處理-pandas用法Python
- 資料的規範化——Pandas處理
- Python利用pandas處理資料與分析Python
- 資料預處理之 pandas 讀表
- 只需一行程式碼,你的純文字秒變Markdown行程
- 分散式是大資料處理的萬用藥?分散式大資料
- Hadoop大資料分散式處理系統簡介Hadoop大資料分散式
- Pandas 基礎 (6) - 用 replace () 函式處理不合理資料函式
- Pandas 基礎 (5) - 處理缺失的資料
- pandas 資料處理 一些常用操作
- 處理pandas讀取資料為nan時NaN
- Python 資料處理庫 pandas 入門教程Python
- Python 資料處理庫 pandas 進階教程Python
- Pandas高階教程之:處理缺失資料
- Pandas高階教程之:處理text資料
- 桌面輕量級資料處理指令碼指令碼
- pandas 處理資料和crc16計算
- 資料清洗與預處理:使用 Python Pandas 庫Python
- 從併發程式設計到分散式系統-如何處理海量資料(上)程式設計分散式
- 分散式資料物件:超級終端的"全域性變數"分散式物件變數
- UCI資料集詳解及其資料處理(附148個資料集及處理程式碼)
- Laravel 分散式事務處理Laravel分散式
- 百億級資料處理優化優化
- 【Pandas學習筆記02】-資料處理高階用法筆記
- 【Pandas學習筆記02】處理資料實用操作筆記
- 資料預處理-資料整合與資料變換
- 低程式碼低成本快速整合OA/ERP/MES系統 ——下秒資料
- springcloud分散式事務處理 LCNSpringGCCloud分散式
- GaussDB(分散式)例項故障處理分散式
- 分散式事務處理方案,微服事務處理方案分散式
- EasyExcel處理Mysql百萬資料的匯入匯出案例,秒級效率,拿來即用!ExcelMySql
- Pandas 資料處理三板斧——map、apply、applymap 詳解APP
- 對pandas進行資料預處理的例項講解
- 【Python自動化Excel】pandas處理Excel資料的基本流程PythonExcel
- 基於python的大資料分析-資料處理(程式碼實戰)Python大資料
- [原始碼分析]並行分散式任務佇列 Celery 之 子程式處理訊息原始碼並行分散式佇列
- 分散式流處理框架 Apache Storm —— 程式設計模型詳解分散式框架ApacheORM程式設計模型