我正在解决一个比内存更大的数据集的问题。原始数据集是一个.csv文件。其中一列用于来自musicbrainz服务的跟踪is。
我已经做了什么
我用达斯克读取达斯克文件,并将其转换为磁盘上的卡斯特拉格式,以获得更高的性能。我还查询了musicbrainz,并使用小淘气填充了sqlite,并给出了一些相关的结果。我选择使用DB而不是另一个dask.dataframe,因为这个过程花费了几天时间,而且我不想在发生任何故障时丢失数据。
我还没有真正开始分析数据。在数据重新整理的过程中,我设法弄得够乱。
当前问题
我很难将这些列从SQL连接到dask /。实际上,我不确定这是否可行。
替代办法
我似乎在为这项任务选择最好的工具时犯了一些错误。卡斯特拉可能还不够成熟,我认为这是问题的一部分。另外,选择SQLAlchemy更好一些,因为它被熊猫使用,而peewee不使用。
Blaze + HDF5可能是dask + castra的良好替代品,主要是因为HDF5比castra更稳定、更成熟/更完整,而blaze对数据存储不那么固执己见。例如,它可以简化SQL DB到主数据集中的连接。
另一方面,我很熟悉熊猫和达克曝光的“相同”API。有了达斯克,我也获得了并行性。
TL;DR
我有一个比内存更大的数据集+ sqlite,我需要加入主数据集。我怀疑是否应该使用dask + castra (不知道dask.dataframe的其他相关数据存储),并使用SQLAlchemy一次将部分SQL加载到熊猫的数据仓库中。我看到的最好的选择是改用blaze + HDF5。在这种情况下你有什么建议?
欢迎任何其他选择/意见。我希望这是足够具体的。
发布于 2015-10-14 16:25:23
在以下几点上,你是正确的:
如果你想要更成熟的东西,你可以考虑HDF5或者CSV (如果你性能慢的话)。Dask.dataframe支持所有这些格式,就像熊猫一样。
也许你想用一个或另一个。如果您对将SQL数据读入dask.dataframe感兴趣,则可以使用提出问题。在一般情况下,这一点不难补充。
https://stackoverflow.com/questions/33129839
复制相似问题