Python 我想将一个75000x1000矩阵和浮点值有效地写入数据库

Python 我想将一个75000x1000矩阵和浮点值有效地写入数据库,python,sql,django,pandas,bigdata,Python,Sql,Django,Pandas,Bigdata,谢谢你听我说完 我有一个数据集,它是一个形状为75000x1000的矩阵,填充了浮点值。把它想象成热图/相关矩阵。我想将其存储在SQLite数据库SQLite中,因为我正在修改现有的Django项目。源数据文件的大小是8GB,我正在尝试使用python来执行我的任务 我曾尝试使用pandas分块将文件读入python,并将其转换为无堆栈的成对索引数据,然后将其写入json文件。但是这个方法消耗了我的计算成本。对于大小为100x10000的块,它会生成一个200 MB的json文件 此json文件

谢谢你听我说完

我有一个数据集,它是一个形状为75000x1000的矩阵,填充了浮点值。把它想象成热图/相关矩阵。我想将其存储在SQLite数据库SQLite中,因为我正在修改现有的Django项目。源数据文件的大小是8GB,我正在尝试使用python来执行我的任务

我曾尝试使用pandas分块将文件读入python,并将其转换为无堆栈的成对索引数据,然后将其写入json文件。但是这个方法消耗了我的计算成本。对于大小为100x10000的块,它会生成一个200 MB的json文件

此json文件将用作Django后端中形成SQLite数据库的固定装置

有更好的方法吗?更快/更聪明的方法。我不认为用一整天的时间写出一个90 GB左右的json文件是可行的。甚至不确定Django数据库是否可以承担此负载


感谢您的帮助

SQLite给人留下了深刻的印象,但它可能无法提供您所期望的那种规模的性能,因此,即使您现有的项目是SQLite上的Django,我建议您只需为不同的数据后端编写Python包装器,并在Django中使用它

更重要的是,忘记使用Django模型来实现这样的功能;它们是为了方便地将数据库记录映射到Python对象而构建的抽象层,而不是为了性能。Django很快就会因为无法理解您要实现的目标而无法构建上亿个对象

相反,您需要使用适合于您想要进行的查询类型的数据库类型/引擎;如果一个典型的查询由一百个点查询组成,以获取特定“单元格”中的数据,那么键值存储可能是理想的;如果您通常在单个“行”或“列”中提取值的范围,那么这是需要优化的;如果您的查询通常涉及获取子矩阵并对其执行可预测的操作,那么您可以通过预先计算某些累积值来显著提高性能;如果您想使用完整的数据集来训练机器学习模型,您可能最好根本不使用数据库作为主存储,因为数据库本质上牺牲了对完整原始数据的快速检索来快速计算感兴趣的子集,特别是如果您的ML模型可以使用类似Spark的东西进行并行化的话


没有数据库能够很好地处理所有事情,因此,如果您能够详细说明在这些数据上运行的工作负载,这将是非常有用的—您想问它什么样的问题?

您可能想探索hdf5或可能使用spark的拼花地板。75000 X 10000是需要推送的大量数据。无论你用什么方法来解决熊猫问题,都要等待一段时间。你能对这个文件做些总结吗?分组类别,聚合值?另外-你的数据由什么组成。是不是有很多零,我们可以使用像a这样的东西?数据集不是稀疏的。我的目的不是总结数据。我希望最终将矩阵从源文件移动到Django SQLite数据库。中间人的工作是这里的巨大障碍。你打算如何在sqlite数据库中使用这个矩阵?什么样的表布局?我想将我的大矩阵数据集插入sqlite django数据库。矩阵可以作为[index | column | value]取消堆栈DB需要{'model':'xxx','pk':int,'fields':{'feat1':index,'feat2':column,'value':value}的格式。创建后者就是造成问题的原因