python - python处理500万个key-value数据,NoSql能解决吗?

标签 python nosql

我想获得有关使用 No-SQL 数据存储来满足我的特定要求的建议。

让我解释一下: 我必须处理五个 csv 文件。每个 csv 包含 500 万行,并且每个 csv 中都存在公共(public) id 字段。因此,我需要通过迭代 500 万行来合并所有 csv。因此,我使用 python 字典根据公共(public) id 字段合并所有文件。但这里的瓶颈是你无法使用 python 字典将 500 万个键存储在内存中(< 1gig)。 所以,我决定使用No-Sql。我认为它可能有助于处理500万个键值存储。但我对此没有明确的想法。

无论如何,我们无法减少迭代,因为我们有五个 csv,每个 csv 都必须迭代才能更新值。

有简单的步骤吗? 如果是这种方式,您能给我 No-Sql 数据存储来处理键值对吗?

注意:我们也将值作为列表类型。

最佳答案

如果 CSV 已按 ID 排序,您可以使用 merge-join algorithm 。它允许您迭代单行,因此您不必将所有内容都保留在内存中。

不过,将算法扩展到多个表/CSV 文件将是一个更大的挑战。 (但可能比学习 Hadoop 这样的新东西更快)

关于python - python处理500万个key-value数据,NoSql能解决吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11522232/

相关文章:

python - Fasttext .vec 和 .bin 文件之间的区别

python - 如何在给定语法规则的情况下生成所有可能的字符串?

python - python中列向量乘积的向量实现

redis - 在 Redis 中选出新的 master 之前数据会发生什么变化?

database - 我正在尝试在 Windows 上的 Redis 安装上导入外部 Redis 数据库(.RDB 文件),但未加载新数据?

nosql - couchbase 查询返回空答案

python - 从数据(无文件)中将 gif 加载到 QMovie 对象中

python - 通过conda安装特定版本的spyder

nosql - Cassandra 的列族中有多少行会影响性能?

mysql - 混合 SQL 和 MongoDB 解决方案