我正在使用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")