Scala Spark Streaming仅对在流初始化时间之后创建的文件进行流处理

Scala Spark Streaming仅对在流初始化时间之后创建的文件进行流处理,scala,apache-spark,spark-streaming,Scala,Apache Spark,Spark Streaming,是否有任何方法可以配置textFileStream源,以便无论文件创建时间如何,它都将处理添加到源目录中的任何文件 为了演示这个问题,我创建了一个基本的Spark流媒体应用程序,它使用textFileStream作为源,并将流内容打印到控制台。当在运行应用程序之前创建的现有文件复制到源目录时,不会向控制台打印任何内容。当应用程序开始运行后创建的文件复制到源目录时,将打印文件内容。下面是我的代码供参考 val conf = new SparkConf().setAppName("Streaming

是否有任何方法可以配置
textFileStream
源,以便无论文件创建时间如何,它都将处理添加到源目录中的任何文件

为了演示这个问题,我创建了一个基本的Spark流媒体应用程序,它使用
textFileStream
作为源,并将流内容打印到控制台。当在运行应用程序之前创建的现有文件复制到源目录时,不会向控制台打印任何内容。当应用程序开始运行后创建的文件复制到源目录时,将打印文件内容。下面是我的代码供参考

val conf = new SparkConf().setAppName("Streaming Test")
                          .setMaster("local[*]")

val spark = new SparkContext(conf)
val ssc = new StreamingContext(spark, Seconds(5))

val fileStream = ssc.textFileStream("/stream-source")

val streamContents = fileStream.flatMap(_.split(" "))

streamContents.print()

这是记录的用户行为

如果我们想使用该目录中的现有文件,我们可以使用Spark API加载这些文件,并对其应用所需的逻辑

val existingFiles = sparkContext.textFile(path)

然后,设置并启动流逻辑。
我们甚至可以在处理新文件时使用现有文件的数据。

源代码中的文档有点含糊不清-
在本例中,“新”是指在这段时间内读者可以看到的文件。
。这使得文件似乎不需要在时间段开始后创建,而只需要在时间段开始后提供给源。
val existingFilesDS = sparkSession.read.text(path)