使用spark分析日志文件?

时间:2017-06-05 04:08:18

标签: java apache-spark

我编写了程序来分析日志,其中意图是在日志中过滤/打印错误语句

    String master = "local[*]";

    String inputFilePath = "C:/test.log";

    SparkConf conf = new SparkConf().setAppName(App.class.getName())
            .setMaster(master);
    JavaSparkContext context = new JavaSparkContext(conf);

    JavaRDD<String> stringRDD = context.textFile(inputFilePath);

    stringRDD.filter(text -> text.contains("ERROR"))
            .collect().forEach(result -> System.out.println(result));

但是日志文件是由不同的进程连续写入的。这是时间线示例

  1. 在T1,日志文件中存在10行
  2. 在T2(5秒后),再加入5行
  3. 在T3(5秒后),再添加7行
  4. 现在我的程序应该在5秒后读取文件并仅从新添加的行打印错误语句。我应该手动生成继续保持的线程 每隔5秒读一次还是有更好的火花方式?

    更新: -

    基于谷歌,我试过下面但没有帮助

    SparkConf conf = new SparkConf().setAppName(App.class.getName())
                    .setMaster(master);
            //JavaSparkContext context = new JavaSparkContext(conf);
            JavaStreamingContext streamingContext = new JavaStreamingContext(conf, Durations.seconds(10));
    
            JavaDStream<String> stringRDD = streamingContext.textFileStream(inputFilePath);
                stringRDD.filter(text -> text.contains("ERROR")).foreachRDD(result -> System.out.println(result));
    

0 个答案:

没有答案