我开始学习 Spark,并且很难理解 Spark 中结构化流背后的合理性。结构化流将所有到达的数据视为无界输入表,其中数据流中的每个新项目都被视为表中的新行。我有以下代码可以将传入的文件读入csvFolder
.
val spark = SparkSession.builder.appName("SimpleApp").getOrCreate()
val csvSchema = new StructType().add("street", "string").add("city", "string")
.add("zip", "string").add("state", "string").add("beds", "string")
.add("baths", "string").add("sq__ft", "string").add("type", "string")
.add("sale_date", "string").add("price", "string").add("latitude", "string")
.add("longitude", "string")
val streamingDF = spark.readStream.schema(csvSchema).csv("./csvFolder/")
val query = streamingDF.writeStream
.format("console")
.start()
如果我将一个 1GB 的文件转储到该文件夹会发生什么。根据规范,流式作业每隔几毫秒触发一次。如果 Spark 在下一瞬间遇到这么大的文件,在尝试加载文件时会不会内存不足。还是自动批处理?如果是,这个批处理参数是否可配置?