IForeachWriter 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于编写自定义逻辑以处理查询生成的数据的接口。 这通常用于将流式查询的输出写入任意存储系统。
public interface IForeachWriter
type IForeachWriter = interface
Public Interface IForeachWriter
注解
Spark 将按以下方式使用此接口的任何实现:
- 此类的单个实例负责查询中单个任务生成的所有数据。 换句话说,一个实例负责处理以分布式方式生成的数据的一个分区。
- 此类的任何实现都必须是 SerializableAttribute ,因为每个任务都将获得所提供对象的全新序列化反序列化副本。 因此,强烈建议在调用 方法后 Open(Int64, Int64) 完成任何用于写入数据 (例如打开连接或启动事务) 的初始化,这表示任务已准备好生成数据。
- 方法的生命周期如下:
重要注意事项:
- 当故障导致重新处理某些输入数据时,
partitionId
和epochId
可用于删除生成的重复数据。 这取决于查询的执行模式。 如果在微批处理模式下执行流式处理查询,则由唯一元组表示的每个分区 (partition_id,epoch_id) 保证具有相同的数据。 因此, (partition_id、epoch_id) 可用于删除重复数据并/或以事务方式提交数据,并实现精确一次的保证。 但是,如果流式处理查询以连续模式执行,此保证就不成立,因此不应用于重复数据删除。
方法
Close(Exception) |
停止处理执行程序端中新数据的一个分区时调用。 这保证称为 返回Open(Int64, Int64)
|
Open(Int64, Int64) |
在开始处理执行程序中新数据的一个分区时调用。 |
Process(Row) |
调用 以处理 Row 执行程序端中的每个对象。 仅当返回 |
适用于
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈