我有各种日志文件,其中包含数百万条记录。我想将记录从这些文件推送到mongodb,我必须在插入MongoDb之前规范化数据并使用Filter on 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或其他任何类型的要求吗?我从来没有在卡夫卡和风暴之前使用它
答案 0 :(得分:2)
在程序中处理大文件需要大量的内存和正如你所说,你的输入很大,所以用一个过程处理它会花费很多时间。对于给定的用例,您可以将storm与kafka结合使用。我将尝试解释它如何帮助您解决问题 -
风暴有两部分 - 喷射和螺栓将您的日志文件放入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/
希望它有所帮助。