Spark流无法从Windows目录中读取文件

时间:2018-04-02 23:50:30

标签: scala apache-spark spark-streaming

我正在尝试在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

我在这里缺少什么?

赞赏任何建议或建议

1 个答案:

答案 0 :(得分:0)

我设法完成这项工作的唯一方法是修改目标目录中文件的内容。没有添加新文件或更改工作文件的名称。

当然,这不能被视为一种解决方案,因此,如果有人对此问题了解得更多,请告诉我。