0

我正在研究 Hadoop MapReduce。我创建了 MapReduce 程序,它为我们的大型 Apache 日志执行倒排索引。MapReduce 的输出如下所示:

{"Error" {log1 {200,300,500}, log2{400,900,800..}}

{"201" {log5 {250,350,550}, log2{850,950,80..}}

{"400" {log3 {280,380,580}, log2{480,980,880..}}

在这里,我将使用它的倒置索引值存储单词,作为它在日志文件中出现的位置以及它的名称。

现在我想编写示例脚本/程序,通过它我可以通过它的行号搜索日志。我将使用上面的 MarPreduce 输出。我怎么能通过java做?

示例:如果用户在 apache 日志中搜索错误,我将使用 log1,log2 并显示 200,300,400 行中的记录

4

1 回答 1

0
BufferedReader reader;
int lineCount = 0;
int lineYouWant = 100;
reader = new BufferedReader(new InputStreamReader(new FileInputStream("sample.txt")));
while (reader.ready()) {
   String line = reader.readLine();
   lineCount++;
   if (lineCount == lineYouWant) doStuff();

使用上述内容作为起点。您必须阅读整个文件(直到找到所需行的位置),因为这是“计算”行数的唯一方法。

于 2013-10-31T06:03:43.030 回答