我正在使用Spark从文件夹中读取文本文件并将其加载到配置单元。
火花流的间隔为1分钟。在极少数情况下,源文件夹可能有1000个更大的文件。
如何控制火花流以限制程序读取的文件数量?目前我的程序正在读取最近1分钟内生成的所有文件。但我想控制它正在阅读的文件数量。
我正在使用textFileStream API。
JavaDStream<String> lines = jssc.textFileStream("C:/Users/abcd/files/");
有没有办法控制文件流速率?
答案 0 :(得分:0)
我不敢。 Spark steaming基于时间驱动。 您可以使用提供数据驱动
的 Flinkhttps://ci.apache.org/projects/flink/flink-docs-release-1.2/concepts/programming-model.html#windows
答案 1 :(得分:0)
您可以使用&#34; spark.streaming.backpressure.enabled&#34;和&#34; spark.streaming.backpressure.initialRate&#34;控制收到数据的速度!!!
答案 2 :(得分:0)
如果文件是CSV文件,则可以使用结构化流将文件读入具有maxFilesPerTrigger
的流DataFrame中,如下所示:
import org.apache.spark.sql.types._
val streamDf = spark.readStream.option("maxFilesPerTrigger", "10").schema(StructType(Seq(StructField("some_field", StringType)))).csv("/directory/of/files")