我正在尝试在Windows 10笔记本电脑上执行下一个Spark流媒体代码:
object ApacheLogStreamer {
private val WINDOW_LENGTH = new Duration(30 * 1000)
private val SLIDE_INTERVAL = new Duration(10 * 1000)
private val LOGS_DIR = "file:///C://tmp//apache-logs"
private val CHECKPOINT_DIR = "file:///C://tmp//checkpoints"
def main(args: Array[String]): Unit = {
import org.apache.spark._
import org.apache.spark.streaming._
val conf = new SparkConf().setAppName("streaming-test").setMaster("local[*]")
val ssc = new StreamingContext(conf, SLIDE_INTERVAL)
ssc.checkpoint(CHECKPOINT_DIR)
val logData: DStream[String] = ssc.textFileStream(LOGS_DIR)
val accessLogDStream = logData.flatMap{line =>
ApacheLogParser.parseLogLine(line)
}
accessLogDStream.print()
val windowDStream = accessLogDStream.window(WINDOW_LENGTH, SLIDE_INTERVAL)
windowDStream.foreachRDD { logs =>
if (logs.count() == 0) {
println("No access logs in this time interval")
} else {
println("SUCCESS")
}
}
ssc.start()
ssc.awaitTermination();
}
}
虽然到目前为止我无法读取指定目录C://tmp//apache-logs
中的文件。
我得到的唯一输出是:No access logs in this time interval
和
-------------------------------------------
Time: 1522711830000 ms
-------------------------------------------
运行我的程序后,我尝试将文件转换为Unix样式后将文件复制到目标目录中但没有结果。
我也尝试过我在下一篇文章中找到的解决方案,尽管它们都没有工作:
Spark Streaming not reading files from local directory in Windows
Spark Streaming: StreamingContext doesn't read data files
Spark:2.2.0 Spark流媒体:2.11
我在这里缺少什么?
赞赏任何建议或建议
答案 0 :(得分:0)
我设法完成这项工作的唯一方法是修改目标目录中文件的内容。没有添加新文件或更改工作文件的名称。
当然,这不能被视为一种解决方案,因此,如果有人对此问题了解得更多,请告诉我。