数据在MongoDB中GB的数据摄入

问题描述:

我有各种包含数百万条记录的日志文件。我想把记录从这些文件推送到mongodb,我必须在插入MongoDb之前对数据进行规范化处理,并在文件中的每行/记录中使用作为常用变量的ID。数据在MongoDB中GB的数据摄入

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或任何其他类型的要求吗?我从来没有在卡夫卡和风暴之前使用它

+0

如果它正在消耗“大量内存”,那么当你应该用“块”处理时,你可能只是“sl”“整个文件到内存中,相当肯定会有大量的读取你的日志文件的例子, “大数据”不是“创可贴”或任何真正有形的东西,它更像是一种“哲学”,只有当你已经了解基础知识时才会有所帮助, –

+0

那么,你需要找出什么我们不知道你的情况有什么问题,你的代码是否写得很糟糕?你的数据库索引太多了吗?你的数据库服务器服务不足?等等。 –

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

风暴有两个组成部分 - 脱粒机和博尔特
脱粒机 - 它释放的数据流从源代码。
螺栓 - 持有您的业务逻辑,为您的情况正常化记录。

将您的日志文件放入kafka主题。让Kafka成为Spout的来源。 Spout会将记录释放为可用螺栓处理的流。
关于风暴的更多信息,您可以通过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/

希望它有帮助。