0

Hadoop MapReduce に取り組んでいます。大規模な Apache ログの逆インデックスを行う MapReduce プログラムを作成しました。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 に答える