mongodb - 如何在 MongoDB(大数据)中导出较小的集合?聚合超时!(非常感谢任何大数据帮助!)
问题描述
这是我第一次在 Stackoverflow 上创建帐户,所以如果我的要求真的很简单,我很抱歉。
我想做的事:我有一个 1400 万个我希望分析的 twitter 数据文档数据库。我试图只查询那些使用特定语言的查询并将该查询导出到一个较小的集合,以便我可以实际对其进行分析。
我的问题:如果没有 MongoDB Compass 超时或无限期运行,我似乎无法运行完整查询 - 我不知道如何使我的数据库更小,如果我的 RAM 被过度使用,我就无法对其进行分析我的电脑崩溃了。
我试过的:
- 我曾尝试使用 PyMongo,因为 Python 是我知道的唯一语言,但没有足够的文档,所以我越来越绝望并使用 GUI,所以 Compass
- 我尝试在较小的数据库上执行我的查询(简单的查询,例如 {language : {$eq : "en" } , "user.location" = "USA"} 并导出它以减小数据库的大小并且它可以工作!当我在我真正的 32GB 大小的数据库上尝试同样的事情时,它要么给我一个超时错误,要么当我增加最大时间 ms 时,它会永远运行并且我无法导出任何东西。
- 我曾尝试使用数据库上的 $match 和 $project 在 MongoDB Compass 中聚合它,但它也会超时,我无法弄清楚如何从聚合中导出它。
请帮助我,我真的很沮丧,我所有的分析技能都是无用的,因为我似乎无法获得数据,因为规模太大了 :(
如果您有任何其他提示,例如不要使用 MongoDB,将 R 或 Hadoop 用于 windows 或 smth,请告诉我,在这一点上,如果我能掌握这个数据集,我愿意自学任何东西!
谢谢!
解决方案
为要查询的字段添加索引,并增加集群中的内存等。要在集合上创建索引字段,请使用以下 shell 命令一次:
db.collection.createIndex(
{
"language": 1
},
{
unique: false,
}
)
db.collection.createIndex(
{
"user.location": 1
},
{
unique: false,
}
)
您无需更改查询即可使用索引,MonogDB 会为您解决。
推荐阅读
- python - Python XML 解析器问题
- kubernetes - 0/2 个节点可用:1 个节点未找到要绑定的可用持久卷,1 个节点具有 pod 无法容忍的污点
- xml - 否则在 Oracle BI Publisher 中不起作用
- python - 为什么全局平均池化在 ResNet 中起作用?
- azure - 如何在 microsoft azure 上列出 vm 上的资源?
- javascript - 您是否需要为 Microsoft Bot Framework 中的每个“beginDialog”调用“endDialog”?什么时候应该调用“endDialog”?
- node.js - 在 CDN 中存储图像的最佳流程是什么
- android - 如何列出android 10上的所有pdf文件?
- ios - 使用字体样式和字体大小复制自定义字体
- matlab - II使用subplot()在一个图中说明矩阵的列之间的关系