簡體   English   中英

使用python為大於內存數據分析選擇框架

[英]Choosing a framework for larger than memory data analysis with python

我正在使用大於內存的數據集解決問題。 原始數據集是.csv文件。 其中一列是來自musicbrainz服務的曲目ID。

我已經做了什么

我用dask讀取.csv文件並將其轉換為磁盤上的castra格式以獲得更高的性能。 我還查詢了musicbrainz API,並使用peewee填充了sqlite數據庫,並提供了一些相關結果。 我選擇使用數據庫而不是另一個dask.dataframe,因為該過程需要幾天時間,並且我不想在發生任何故障時丟失數據。

我還沒有開始真正分析數據。 在重新安排數據的過程中,我設法弄得一團糟。

目前的問題

我很難加入從SQL DB到dask / castra數據幀的列。 實際上,我不確定這是否可行。

替代方法

我似乎在為這項任務選擇最好的工具時犯了一些錯誤。 Castra可能還不夠成熟,我認為這是問題的一部分。 另外,最好選擇SQLAlchemy而不是peewee,因為它使用的是pandas和peewee。

Blaze + HDF5可能是dask + castra的良好替代品,主要是因為HDF5比castra更穩定/成熟/完整,而且火焰對數據存儲的看法較少。 例如,它可以簡化SQL DB到主數據集的連接。

另一方面,我熟悉pandas和dask暴露“相同”的API。 有了dask,我也獲得了並行性。

TL; DR

我有一個大於內存數據集+ sqlite DB,我需要加入主數據集。 我懷疑是否使用dask + castra(不知道dask.dataframe的其他相關數據存儲),並使用SQLAlchemy一次將部分SQL DB加載到帶有pandas的數據框中。 我看到的最好的替代方案是切換到火焰+ HDF5。 在這種情況下你會建議什么?

歡迎任何其他選擇/意見。 我希望這對SO來說足夠具體。

你在以下幾點是正確的:

  • Castra是實驗性的,不成熟的。

如果你想要更成熟的東西,你可以考慮使用HDF5或CSV(如果你的性能很差)。 Dask.dataframe支持所有這些格式,就像pandas一樣。

  • 目前尚不清楚如何在兩種不同的格式(如dask.dataframe和SQL)之間進行連接。

可能你想要使用其中一個。 如果您對將數據讀入dask.dataframe感興趣,可能會引發問題 在常見情況下添加並不難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM