单个日志文件

时间:2015-12-30 08:45:53

标签: apache-spark spark-streaming

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

我正在寻找一个单个日志文件,它随着时间的推移而增长,如何将相同的日志文件读入:DStream或任何Spark RDD句柄,然后处理它cummulatively。我不打算使用nc -lk,因为它可能不是一般方法。 Spark中是否有任何方法或API,我们可以在其中收听日志文件,对它的任何添加内容都将被读取并处理成RDD格式?

1 个答案:

答案 0 :(得分:1)

我认为Spark中没有本地API可以监控single日志文件并立即获取连续增量日志内容(1.6版本之前)
但似乎netcat模式(接收连续增量日志的tail和netnet管道)在套接字流和Kafka流中都很普遍。
使用spark socket流连接到流水线netcat。

tail -f xxx.log | nc -lk 9999

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

  

kafkacat是Apache Kafka的通用非JVM生产者和使用者   0.8,把它想象成卡夫卡的netcat。

https://github.com/edenhill/kafkacat

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

注意:从stdin读取消息,使用snappy压缩生成'syslog'主题。