我正在使用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中实现这一目标? 在此先感谢!!
答案 0 :(得分:1)
我建议您使用Kafka连接器。 Kafka连接器会将文件中的数据加载到指定的主题。无论文件中有什么变化,它都会直接反映到Kafka主题。从该主题,您可以使用数据。 Refer