如何在 MongoDB(大数据)中导出较小的集合?聚合超时! (非常感谢任何大数据帮助!)

Posted

技术标签:

【中文标题】如何在 MongoDB(大数据)中导出较小的集合?聚合超时! (非常感谢任何大数据帮助!)【英文标题】:How to export smaller collection in MongoDB (big data)? Aggregations time out! (any big data help MUCH appreciated!) 【发布时间】:2021-01-17 10:36:09 【问题描述】:

这是我第一次在 *** 上创建帐户,所以如果我的要求非常简单,我深表歉意。

我想做的事:我有一个 1400 万个文档数据库,其中包含我想要分析的 twitter 数据。我试图只查询那些使用特定语言的查询并将该查询导出到一个较小的集合中,以便我可以对其进行实际分析。

我的问题:如果没有 MongoDB Compass 超时或无限期运行,我似乎无法运行完整查询 - 我不知道如何使我的数据库更小,我无法运行我的分析没有过度使用我的 RAM 和我的计算机崩溃。

我尝试过的:

我曾尝试使用 PyMongo,因为 Python 是我所知道的唯一语言,但没有足够的文档,所以我越来越绝望并使用 GUI 所以 Compass 我尝试在较小的数据库上执行我的查询(简单查询,如 language : $eq : "en" , "user.location" = "USA" 并导出它以减小数据库的大小和它有效!当我在我真正的 32GB 大小的数据库上尝试同样的事情时,它要么给我一个超时错误,要么当我增加最大时间 ms 时,它永远运行并且我无法导出任何东西。 我曾尝试在 MongoDB Compass 中使用我的数据库上的 $match 和 $project 聚合它,但它也会超时,我不知道如何从聚合中导出它。

请帮帮我,我真的很沮丧,我所有的分析技能都没有用,因为我似乎无法获得数据,因为规模太大了 :(

如果您有任何其他提示,例如不要使用 MongoDB,在 windows 或 smth 上使用 R 或 Hadoop,请告诉我,在这一点上,如果我能掌握这个数据集,我愿意自学任何东西!

谢谢!

【问题讨论】:

【参考方案1】:

Add an index 到您要查询的字段,并增加集群中的内存等。要在集合上创建索引字段,请使用以下 shell 命令一次:

db.collection.createIndex(
  
      "language": 1
  ,
  
      unique: false,
  
)


db.collection.createIndex(
  
      "user.location": 1
  ,
  
      unique: false,
  
)

您无需更改查询即可使用索引,MonogDB 会为您解决。

【讨论】:

以上是关于如何在 MongoDB(大数据)中导出较小的集合?聚合超时! (非常感谢任何大数据帮助!)的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB_GridFS_存储文件

在 mongodb 集合中导入 json?

如何将大数组拆分为较小的数组?

在mongodb集合中导入json吗?

如何在 N 个较小的矩形上拆分一个大矩形以使其看起来随机? [关闭]

如何显示较小的视频文件比较大的视频文件流速度更快?