Django 建议使用几何图形处理200 GB CSV
我有一个200 GB的CSV文件,代表全球各地的位置和地点。每个条目行有64列,并且有冗余信息。我做了一些计算,大小约为8亿行。我的第一个方法是将所有数据推送到Postgres+Postgis中。数据不是很干净,有些行不具备数据类型特性,因此,我首先进行了ORM实现,验证并修复数据类型不一致性,并处理异常。 我使用的ORM是Django>1.5,处理不到总数据集的0.1%需要大约3个小时。 我还尝试将数据集划分到不同的文件中,以便一点一点地将它们放入数据库中进行处理。我使用了常用的unix命令,如Sed、Cat、AWK和Head来完成这项工作,但这需要花费很多时间 我的问题如下: 使用Django ORM听起来像上帝的方法 SQLAlchemy如何帮助加快插入速度 如何在较短的时间内拆分数据集 我最近看到了面向数据分析师的Python库,它能帮助完成这项任务吗?一旦数据存储在数据库中,可能会使查询变得更容易 您建议使用哪些其他工具来处理如此大量的数据Django 建议使用几何图形处理200 GB CSV,django,postgresql,orm,pandas,bigdata,Django,Postgresql,Orm,Pandas,Bigdata,我有一个200 GB的CSV文件,代表全球各地的位置和地点。每个条目行有64列,并且有冗余信息。我做了一些计算,大小约为8亿行。我的第一个方法是将所有数据推送到Postgres+Postgis中。数据不是很干净,有些行不具备数据类型特性,因此,我首先进行了ORM实现,验证并修复数据类型不一致性,并处理异常。 我使用的ORM是Django>1.5,处理不到总数据集的0.1%需要大约3个小时。 我还尝试将数据集划分到不同的文件中,以便一点一点地将它们放入数据库中进行处理。我使用了常用的unix命令,
感谢您的帮助和阅读这篇长篇文章。1删除多余的列。2使用split将文件拆分为大小合理的块~1GB 3创建一个脚本,分别逐个导入这些块。这将允许您检测和纠正数据中的错误和/或中断导入过程。4您可能希望在导入时删除或禁用约束或索引。1在不进行任何类型检查的情况下导入到临时表。2.打扫桌子。3将干净的数据移动到主表。附加-检查Postgres配置。通过为Postgres提供更多资源,您可以显著减少处理时间。如果cat文件>/dev/null花费的时间太长,则您的案例在当前硬件上是没有希望的。您好!谢谢大家。我一直在做测试。我尝试在dev/null中对所有内容进行cat,花了2个多小时。解析数据集的任何其他意图都将花费太多时间。我要做的是使用split命令,如果速度太慢,我自己做。但问题仍然是?您认为使用ORM方法是一种好方法吗?我将尝试探索无sql,也许它更快。