小编Joh*_*ack的帖子

随着时间的推移,KTable/KStream 内存消耗

有没有办法计算随着时间的推移,java/scala 应用程序中的 KTable/KStream 将使用多少堆(或任何其他)内存?

我有一些具体的假设,我想知道它们是否正确:

  • Kafka 流仅使用内部主题和 RocksDB。

  • RocksDB 是嵌入式数据库,因此它使用我的应用程序的堆内存。

  • 当拓扑中的任何处理器不再使用这些记录时,KStream 不断地从 RocksDB 中删除所有记录(例如,用于与指定的 JoinWindow 进行连接)(== 没有使用太多内存)

  • KTable完全存储在RocksDB中(==在内存中)

  • 当 KTable 收到空值记录时,它会从 RocksDB 中删除记录(==释放内存)

memory apache-kafka apache-kafka-streams confluent-platform

5
推荐指数
1
解决办法
2023
查看次数

如何在编写蒸汽火花数据帧时指定增量表属性

假设我有一个流数据帧,并且我正在将其写入 Databricks Delta Lake:

someStreamingDf.writeStream
  .format("delta")
  .outputMode("append")
  .start("targetPath")

Run Code Online (Sandbox Code Playgroud)

然后从中创建一个增量表:

spark.sql("CREATE TABLE <TBL_NAME> USING DELTA LOCATION '<targetPath>'
TBLPROPERTIES ('delta.autoOptimize.optimizeWrite'=true)")

Run Code Online (Sandbox Code Playgroud)

失败了AnalysisException: The specified properties do not match the existing properties at <targetPath>

我知道我可以预先创建一个表:

CREATE TABLE <TBL_NAME> (
  //columns
) 
USING DELTA LOCATION "< targetPath >"
TBLPROPERTIES (
  "delta.autoOptimize.optimizeWrite" = true, 
  ....
) 
Run Code Online (Sandbox Code Playgroud)

然后就写入它,但是使用所有列及其类型编写此 SQL 看起来像是一些额外/不必要的工作。那么有没有办法在写入增量表(第一次)时而不是事先指定这些 TBLPROPERTIES?

apache-spark databricks spark-structured-streaming delta-lake

5
推荐指数
1
解决办法
7113
查看次数