表流处理读写

Delta Lake通过readStream和writeStream与Spark结构化流深度集成。Delta Lake克服了许多通常与流系统和文件相关的限制,包括:

  • (1) 使用多个流(或并发批处理作业)维护exactly-once的处理。即使有其他流或批查询并发地运行在该表上,Delta Lake事务日志也能保证精确一次性处理。
  • (2) 当使用文件作为流的源时,有效地发现哪些文件是新的。

对于表上的许多Delta Lake操作,可以在创建新的SparkSession时通过设置配置来支持与Apache Spark DataSourceV2和Catalog API(自3.0以来)的集成。

1.Delta表作为数据源

当将Delta表加载为流源并在流查询中使用它时,查询将处理表中出现的所有数据以及在流启动后到达的任何新数据。示例代码如下:

spark.readStream.format("delta").load("/delta/events")

import io.delta.implicits._
spark.readStream.delta("/delta/events")        // 简写

1)限制输入的速度

以下选项可用于控制微批:

  • (1) maxFilesPerTrigger:每个微批处理中需要考虑多少个新文件。默认值是1000。
  • (2) maxBytesPerTrigger:每个微批处理的数据量。此选项设置一个“软最大值”,意味着 ......

    ......

    抱歉,只有登录会员才可浏览!会员登录


《PySpark原理深入与编程实战》