用python处理500万个键值数据。NoSql能解决吗?

用python处理500万个键值数据。NoSql能解决吗?,python,nosql,Python,Nosql,我想得到一个关于不使用SQL数据存储来满足我的特殊需求的建议 让我解释一下: 我必须处理五个csv文件。每个csv包含500万行,并且在每个csv中都显示了公共id字段。因此,我需要通过迭代500万行来合并所有csv。因此,我使用python dictionary根据公共id字段合并所有文件。但这里的瓶颈是无法使用python dictionary将500万个密钥存储在内存中(

我想得到一个关于不使用SQL数据存储来满足我的特殊需求的建议

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

无论如何,我们不能减少迭代,因为我们有五个CSV,每个CSV都必须迭代以更新值

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


注意:我们也有列表类型的值。

据我所知,您希望合并5个输入文件中的大约500000项。如果在一台机器上执行此操作,可能需要很长时间来处理1g的数据。所以我建议检查一下使用Hadoop的可能性。是一个批处理工具。通常Hadoop程序是用Java编写的,但也可以用Java编写

我建议检查使用Hadoop在集群中处理数据的可行性。您可以使用HBase(列数据存储)存储数据。这是一个想法,检查它是否适用于您的问题

如果这没有帮助,请提供有关您试图解决的问题的更多详细信息。从技术上讲,您可以使用任何语言或数据存储来解决此问题。但你需要找到哪一个解决得最好(在时间或资源方面),以及你是否愿意使用/学习新工具/db


非常好的入门教程:

据我所知,您希望合并5个输入文件中的大约500000项。如果在一台机器上执行此操作,可能需要很长时间来处理1g的数据。所以我建议检查一下使用Hadoop的可能性。是一个批处理工具。通常Hadoop程序是用Java编写的,但也可以用Java编写

我建议检查使用Hadoop在集群中处理数据的可行性。您可以使用HBase(列数据存储)存储数据。这是一个想法,检查它是否适用于您的问题

如果这没有帮助,请提供有关您试图解决的问题的更多详细信息。从技术上讲,您可以使用任何语言或数据存储来解决此问题。但你需要找到哪一个解决得最好(在时间或资源方面),以及你是否愿意使用/学习新工具/db


非常好的入门教程:

如果这只是一个一次性过程,您可能只需要设置一个内存超过1G的EC2节点,然后在那里运行python脚本。500万个条目并不是那么多,Python字典应该能够处理它。我认为在这种情况下你不需要Hadoop


您还可以尝试通过在多次运行中重新排序项目来优化脚本,而不是使用迭代器同步运行5个文件,这样您就不必同时在内存中保存所有内容。

如果这只是一个一次性过程,您可能只需要设置一个内存超过1G的EC2节点,并在那里运行python脚本。500万个条目并不是那么多,Python字典应该能够处理它。我认为在这种情况下你不需要Hadoop


您还可以尝试通过在多次运行中对项目重新排序来优化脚本,而不是使用迭代器同步运行5个文件,这样您就不必同时将所有内容保留在内存中。

如果CSV已按id排序,则可以使用。它允许您在单行上迭代,因此您不必将所有内容都保存在内存中


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

如果CSV已按id排序,则可以使用。它允许您在单行上迭代,因此您不必将所有内容都保存在内存中


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

提示:“lakh”是一个相当区域性的术语,并没有被普遍理解。“500万”或“500万”可能会被更广泛地理解。@JoachimSauer-我不得不用谷歌搜索它-我不知道它是否是某种特定的数据格式/首字母缩略词抱歉。。edited@JonClements当前位置在印度英语中似乎非常常用。我知道它的唯一原因是因为我经常在旧的Java论坛上无意中发现它。@Joachimsuer是的,这在印度是一个很常见的术语。提示:“lakh”是一个相当区域性的术语,并没有被普遍理解。“500万”或“500万”可能会被更广泛地理解。@JoachimSauer-我不得不用谷歌搜索它-我不知道它是否是某种特定的数据格式/首字母缩略词抱歉。。edited@JonClements当前位置在印度英语中似乎非常常用。我知道它的唯一原因是因为我经常在旧的Java论坛上被它绊倒。@JoachimSauer是的,它在印度很常见。