MongoDB 中 GB 数据的数据摄取

Data Ingestion of GB's of data in MongoDB

我有各种日志文件,其中包含数百万条记录。我想将这些文件中的记录推送到 mongodb,我必须在插入 MongoDb 之前对数据进行规范化,并在 ID 上使用过滤器,这是文件中每一行/记录中的公共变量。

MY_MONGO_DB_SCHEMA =

 {
                    "ID" : "common in all the files",
                         "LOG_FILE_1":[{
                           # variable from LOG_FILE_1
                          "var1" : "contains the value matching with ID in 
                                   record",
                          "var2": "contains the value matching with ID in 
                                   record"
                              }],
                          "LOG_FILE_2" :[{# variable from LOG_FILE_2
                          "var3: "contains the value match with ID in record"
                          "var4": "contains the value match with ID i record"
                           }]
                             }

我已经编写了 Python 脚本,但它会消耗大量内存,或者如果我通过我的脚本限制内存的使用,它会花费很多时间。有人可以建议使用 APACHE STORM 、 APACHE KAFKA 或任何东西来满足此类要求吗? Kafka 和 storm

之前没用过

在程序中处理大文件需要大量内存,正如您所说,您的输入很大,因此使用单个进程处理它会花费大量时间。对于给定的用例,您可以将 storm 与 kafka 结合使用。我将尝试解释它如何帮助您解决问题 -

Storm 有两部分 - Spout 和 Bolt
Spout - 它从源中释放数据流。
Bolt - 保存您的业务逻辑,为您的案例规范化记录。

将你的日志文件放入kafka主题。让 Kafka 成为 Spout 的源。 Spout 会将记录发布为可以在 bolt 中处理的流。
有关 Storm 的更多信息,您可以学习 https://in.udacity.com/course/real-time-analytics-with-apache-storm--ud381/ 课程。这是一门免费课程。
理解Storm的并行性 -http://www.michael-noll.com/blog/2012/10/16/understanding-the-parallelism-of-a-storm-topology/

希望对您有所帮助。