我正在解决一个数据集大于内存的问题。
原始数据集是一个.csv文件。
其中一列是musicbrainz服务的曲目id。在
我已经做了什么
我用dask读取.csv文件,并在磁盘上将其转换为castra格式以获得更高的性能。
我还查询了musicbrainzapi并使用peewee填充了一个sqlite数据库,并给出了一些相关的结果。我选择使用一个数据库而不是另一个数据帧因为这个过程花了几天时间,我不想在任何失败的情况下丢失数据。在
我还没有真正开始分析数据。在重新整理数据的过程中,我设法弄得一团糟。在
当前的问题
我很难将列从sqldb连接到dask/castra数据帧。实际上,我不确定这是否可行。在
替代方法
看来我在为这项任务选择最好的工具时犯了一些错误。卡斯特拉可能还不够成熟,我认为这是问题的一部分。
另外,选择SQLAlchemy来支持peewee可能更好,因为pandas和peewee都没有使用它。在
Blaze+HDF5可能是dask+castra的不错的替代品,主要是因为HDF5比castra更稳定/成熟/完整,blaze在数据存储方面没有那么固执己见。例如。
它可以简化SQL数据库与主数据集的连接。在
另一方面,我熟悉pandas和dask公开了“相同”的API。使用dask,我也获得了并行性。在
TL;DR
我有一个大于内存的数据集+sqlite数据库,我需要将其加入主数据集。
我怀疑是否要与dask+castra合作(不知道其他相关的数据存储数据帧),并使用SQLAlchemy一次将部分SQL数据库加载到pandas的数据帧中。我认为最好的选择是改用blaze+HDF5。
在这种情况下你有什么建议?在
欢迎任何其他选择/意见。
我希望这足够具体。在