【发布时间】:2018-03-17 19:47:10
【问题描述】:
我正在使用 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 中实现这一点? 提前致谢!!
【问题讨论】:
-
为什么要创建
p,即“尾”进程,却从不使用它?错误说The system cannot find the file specified。您是否检查过程序是否在可以找到该文件的正确目录中运行? -
我的问题是如何在 scala 中使用“p”,因为它是 Java 实现。是的,指定的目录路径中确实包含该文件。
-
顺便说一句,这段代码已经用 scala 编写了。但是异常处理是java风格的。
-
通过Java实现我的意思是说我已经使用了java库。
-
我不明白为什么你不能只使用常规的 Java 方法来消费
p变量的输出。
标签: scala apache-kafka