用Spark Streaming分析日志
Analysis of Log with Spark Streaming
最近用Spark分析了一个静态日志文件SQL(找出出现次数超过十次的ip地址之类的东西)。问题是 from this site。但是我使用了自己的实现。我将日志读入 RDD,将该 RDD 转换为 DataFrame(在 POJO 的帮助下)并使用 DataFrame 操作。
现在,我应该使用 Spark Streaming 对 window 30 分钟的流日志文件以及一天的汇总结果进行类似的分析。可以再次找到解决方案 here 但我想用另一种方式来做。所以我所做的就是这个
使用Flume将数据从日志文件写入HDFS目录
使用JavaDStream从HDFS读取.txt文件
然后我不知道如何进行。这是我使用的代码
Long slide = 10000L; //new batch every 10 seconds
Long window = 1800000L; //30 mins
SparkConf conf = new SparkConf().setAppName("StreamLogAnalyzer");
JavaStreamingContext streamingContext = new JavaStreamingContext(conf, new Duration(slide));
JavaDStream<String> dStream = streamingContext.textFileStream(hdfsPath).window(new Duration(window), new Duration(slide));
现在我似乎无法决定是否应该将每个批次转换为 DataFrame 并执行我之前对静态日志文件所做的操作。还是这种方式既费时又矫枉过正。
我绝对是流媒体的菜鸟,Flume。有人可以指导我吗?
在最新版本的 Spark 中,在 Spark 中使用 DataFrame(和 Dataset)是最受推崇的方式,因此它是一个正确的选择。我认为当您将文件移动到 HDFS 而不是从任何事件日志中读取时,由于流的非显式性质,会出现一些模糊。
这里的要点是选择正确的批处理时间大小(或代码段中的幻灯片大小),这样应用程序将处理它在该时间段内加载的数据,并且不会有批处理队列。
最近用Spark分析了一个静态日志文件SQL(找出出现次数超过十次的ip地址之类的东西)。问题是 from this site。但是我使用了自己的实现。我将日志读入 RDD,将该 RDD 转换为 DataFrame(在 POJO 的帮助下)并使用 DataFrame 操作。
现在,我应该使用 Spark Streaming 对 window 30 分钟的流日志文件以及一天的汇总结果进行类似的分析。可以再次找到解决方案 here 但我想用另一种方式来做。所以我所做的就是这个
使用Flume将数据从日志文件写入HDFS目录
使用JavaDStream从HDFS读取.txt文件
然后我不知道如何进行。这是我使用的代码
Long slide = 10000L; //new batch every 10 seconds
Long window = 1800000L; //30 mins
SparkConf conf = new SparkConf().setAppName("StreamLogAnalyzer");
JavaStreamingContext streamingContext = new JavaStreamingContext(conf, new Duration(slide));
JavaDStream<String> dStream = streamingContext.textFileStream(hdfsPath).window(new Duration(window), new Duration(slide));
现在我似乎无法决定是否应该将每个批次转换为 DataFrame 并执行我之前对静态日志文件所做的操作。还是这种方式既费时又矫枉过正。
我绝对是流媒体的菜鸟,Flume。有人可以指导我吗?
在最新版本的 Spark 中,在 Spark 中使用 DataFrame(和 Dataset)是最受推崇的方式,因此它是一个正确的选择。我认为当您将文件移动到 HDFS 而不是从任何事件日志中读取时,由于流的非显式性质,会出现一些模糊。
这里的要点是选择正确的批处理时间大小(或代码段中的幻灯片大小),这样应用程序将处理它在该时间段内加载的数据,并且不会有批处理队列。