控制文件的火花流



我正在使用Spark读取文件夹的文本文件并将其加载到Hive。

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

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

我正在使用textfilestream api。

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

有什么方法可以控制文件流率?

我恐怕不是。Spark Steaming基于时间驱动。您可以使用 FLINK 提供数据驱动

https://ci.apache.org/projects/flink/flink/flink-docs-release-1.2/concepts/programpompramming-model.html#windows

您可以使用" spark.streaming.backpressure.enabled"one_answers" spark.streaming.backpressure.initialrate"来控制收到数据的速率!/div>

如果您的文件是CSV文件,则可以使用结构化流将文件读取到具有maxFilesPerTrigger的流数据框中:

import org.apache.spark.sql.types._
val streamDf = spark.readStream.option("maxFilesPerTrigger", "10").schema(StructType(Seq(StructField("some_field", StringType)))).csv("/directory/of/files")

相关内容

  • 没有找到相关文章

最新更新