2015-12-30 29 views
2

对于使用spark streaming的日志处理,我已经使用了socketStreamtextFileStream API。通过socketStream,在特定的端口上使用nc -lk,我们可以读取附加的日志文件,并且通过textFileStream,可以读取目录中添加的任何新文件并进行累计处理。Spark对单个日志文件进行累积处理

我所寻找的是一个日志文件,随着时间的增长,我怎么能读取相同的日志文件转换为说:DSTREAM或任何Spark RDD手柄,然后再处理它cummulatively。我不打算使用nc -lk,因为它可能不是一般的方法。 Spark中是否有任何方法或API,我们可以在这里监听日志文件,并且可以将其添加到RDD格式中进行读取和处理?

+0

您可能想要考虑Kafka。 – Reactormonk

回答

1

我觉得有Spark中没有原生API来监视single日志文件,并获得持续的增量日志的内容现在(之前1.6版本)
但似乎netcat的模式(尾和netnet管道接收连续增量日志)在套接字流和Kafka流中都很普遍。
使用火花套接字流连接到流水线netcat。

tail -f xxx.log | nc -lk 9999 

或使用火花Kafka流连接到流水线kafkacat。

kafkacat是Apache Kafka的一个非JVM生产者和消费者0.8,认为它是一个用于Kafka的netcat。

https://github.com/edenhill/kafkacat

tail -f /var/log/syslog | kafkacat -b mybroker -t syslog -z snappy 

注:从标准输入读取信息,产生与瞬间压缩 '系统日志' 主题。

+0

使用'nc'是一个聪明的方法来做到这一点...然而,我想我在2.0的地方看到过,你实际上可以监视一个文件。但我对此并不积极。需要更多的研究。 :) – Kristian