控制文件的Spark Streaming

时间:2017-02-27 20:12:02

标签: apache-spark spark-streaming spark-dataframe

我正在使用Spark从文件夹中读取文本文件并将其加载到配置单元。

火花流的间隔为1分钟。在极少数情况下,源文件夹可能有1000个更大的文件。

如何控制火花流以限制程序读取的文件数量?目前我的程序正在读取最近1分钟内生成的所有文件。但我想控制它正在阅读的文件数量。

我正在使用textFileStream API。

    JavaDStream<String> lines = jssc.textFileStream("C:/Users/abcd/files/");

有没有办法控制文件流速率?

3 个答案:

答案 0 :(得分:0)

我不敢。 Spark steaming基于时间驱动。 您可以使用提供数据驱动

Flink

https://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")