【发布时间】:2021-09-30 18:43:02
【问题描述】:
我正在处理一个包含数百万条推文的大型 Mongo 集合。我正在使用远程 ubuntu 服务器运行 Python 脚本,该脚本调用一些方法来分析推文并将分析结果存储在单独的集合中。但是,脚本被杀死了,我怀疑这是因为我的内存不足。
我正在做的一些分析是文本分析。它们包括:检测最常见的主题标签/提及、分析主题标签的共现等。有时,我需要一次对数千条推文执行此类分析。我通常做的是创建一个变量来存储所有推文的文本,然后将该变量传递给为我提供所需数据的方法(例如,哪些是最常见的主题标签等)。我创建包含推文文本的变量,如下所示:
cursor = tweets_data_mongo_collection.find(query, {"_id": 0, "text": 1}, no_cursor_timeout = True)
tweets_text = ""
for doc in cursor:
tweets_text = tweets_text + " " + doc["text"]
然后我将 tweets_text 传递给任何文本分析方法,并将分析结果存储在 Mongo 集合中。
正如我所说,代码运行 find 了一会儿,然后就被杀死了。我倾向于认为这是因为我处理推文的文本数据的方式:在上面的 sn-p 中处理诸如 tweets_text 之类的变量会在光标返回大量推文时消耗大量内存。
但是,我不确定如何克服这个问题。我对处理大数据还很陌生,所以我想知道我是否不知道我可以对我的代码/方法进行一些非常基本的更改来避免这些内存问题。
非常感谢任何帮助。
【问题讨论】:
标签: python-3.x mongodb out-of-memory bigdata pymongo