FileBasedSink的类型参数是什么?
我正在迁移将FileBasedSink从2.0.0版扩展到2.2.0的自定义接收器。类已发生变化,增加了两个类型参数:UserT
和DestinationT
:FileBasedSink的类型参数是什么?
@Experimental(value=FILESYSTEM) public abstract class FileBasedSink<UserT,DestinationT,OutputT>
extends java.lang.Object
implements java.io.Serializable, HasDisplayData
我检查的FileBasedSink的文档,但无法找到它的目的。
所有类型的参数只有OutputT
有一个文档:
* @param <OutputT> the type of values written to the sink.`
回答:
注意,这个API是being redesigned,并会在梁的下一个版本中被废止。然而,与此同时:
UserT
要写入PCollection元素的类型 - 在WriteFiles
转换将适用于PCollection<UserT>
。OutputT
是将直接传递到您的接收器的Writer
的低级别记录类型。它不同于UserT
,因为一些信宿具有“格式化功能”,例如, Avro可以将任何记录转换为GenericRecord
。UserT
通过DynamicDestinations.formatRecord
映射到OutputT
。DestinationT
是用于支持同时写入多个目的地的逻辑类型,例如,将不同类型的事件写入不同模式的Avro文件到不同的目录中。DestinationT
用作要写入记录的分组键的排序,并且使用相同配置写入具有相同DestinationT
的记录。参见FileBasedSink.DynamicDestinations
:getDestination
从UserT
记录中提取目的地,并且一些其他方法产生给定目的地的配置,例如,DynamicAvroDestinations.getSchema
。
该API不是最优 - 例如,它将这些高级概念(用户类型和目的地)引入特定于文件格式的代码(例如写入Avro文件)。这就是它被重新设计的原因。请继续关注实施新API的PR https://github.com/apache/beam/pull/3817。
以上是 FileBasedSink的类型参数是什么? 的全部内容, 来源链接: utcz.com/qa/258445.html