首页 文章

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

提问于
浏览
1

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

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

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

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

提前致谢 !

EDIT : 我使用Python和Spark 1.6.0

1 回答

  • 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()
      }
    }
    

相关问题