从Scala中的文件中连续读取附加数据

时间:2018-03-17 09:07:12

标签: scala apache-kafka

我正在使用Kafka持续监视文件,并希望只读取文件中的附加数据并将其推送到Kafka生产者。这就是我想要实现的目标:

    val fileName = "abc.txt"
    try {
      val command = "tail -f " + fileName
      val p = Runtime.getRuntime.exec(command)
      for (line <- Source.fromFile(fileName).getLines) {
        val message = line + "\n"
        val producerRecord = new ProducerRecord[String, String]("topicName", message)
      producer.send(producerRecord)

    }
    producer.close()
   }catch {
    case e: Exception => e.printStackTrace()
     }

tail -f在Java中工作但在Scala中不起作用。我收到了以下错误:

java.io.IOException: Cannot run program "tail": CreateProcess error=2, The system cannot find the file specified

如何在Scala中实现这一目标? 在此先感谢!!

1 个答案:

答案 0 :(得分:1)

我建议您使用Kafka连接器。 Kafka连接器会将文件中的数据加载到指定的主题。无论文件中有什么变化,它都会直接反映到Kafka主题。从该主题,您可以使用数据。 Refer