我试图理解无界表的物化和内存消耗。我正在制作一个简单的spark应用程序,阅读kafka的主题,从avro反序列化它,并将其写入s3上的Parquet格式。代码如下所示:
val df = spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", kafka-location)
.option("subscribe", topic)
.option("startingOffsets", "earliest")
.load
.select(from_avro(col("value"), abrisConfig) as 'data)
.select("data.*")
df.writeStream.format("parquet")
.option("path", parquetLocation)
.option("checkpointLocation", checkpointLocation)
.outputMode("append")
.start
我知道的一些信息
spark结构化流模型定义了两个表:输入表和结果表。
结果表是查询输入表的结果,与状态一起具体化。
结果表的不确定增长可以通过水印来解决,但只有在使用聚合的情况下才能解决。但是如果没有聚合呢?
根据databricks的演示(幻灯片12),完整的表格不是具体化的,而是部分的。
我的问题
输入表有多少是具体化的?
输入表中的行有多长?
我应该担心记忆还是spark能处理?
提前谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!