如何将Spark输出链接到Logstash输入

时间:2016-07-25 09:14:44

标签: python apache-spark hdfs logstash spark-streaming

我有一个Spark Streaming作业输出一些当前存储在HDFS中的日志,我想用logstash处理它们。不幸的是,虽然有一个插件可以在hdfs中写入logstash,但实际上从hdfs 读取是不可能的。

我已经搜索了一个链接这两个部分的解决方案,但是就python api的Spark流程而言,存储内容的唯一方法是将其作为文本文件写入hdfs,所以我必须从hdfs中读取! 我无法在本地保存它们,因为Spark在群集上运行,我不想从每个节点获取所有数据。

目前我运行一个非常脏的脚本,每2秒复制一次hdfs目录的内容。但这种解决方案显然不能令人满意。

有人知道一个可以帮我发送Spark输出到Logstash的软件吗?

提前致谢!

编辑:我使用Python& Spark 1.6.0

1 个答案:

答案 0 :(得分:0)

这似乎是使用Kafka的完美工作。在Spark Streaming作业中,写入Kafka,然后使用Logstash中的记录。

stream.foreachRDD { rdd =>
  rdd.foreachPartition { partition =>
    val producer = createKafkaProducer()
    partition.foreach { message =>
      val record = ... // convert message to record
      producer.send(record)
    }
    producer.close()
  }
}