输入表在一个简单的spark读取kafka写入s3作业中具体化

6yjfywim  于 2021-07-09  发布在  Spark
关注(0)|答案(0)|浏览(180)

我试图理解无界表的物化和内存消耗。我正在制作一个简单的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能处理?
提前谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题