Java FileBasedLink的类型参数是什么?
我正在将自定义接收器扩展FileBasedLink从2.0.0版迁移到2.2.0版。该类已更改并添加了两个额外的类型参数:Java FileBasedLink的类型参数是什么?,java,apache-beam,apache-beam-io,Java,Apache Beam,Apache Beam Io,我正在将自定义接收器扩展FileBasedLink从2.0.0版迁移到2.2.0版。该类已更改并添加了两个额外的类型参数:UserT和DestinationT: @Experimental(value=FILESYSTEM) public abstract class FileBasedSink<UserT,DestinationT,OutputT> extends java.lang.Object implements java.io.Serializable, HasDispla
UserT
和DestinationT
:
@Experimental(value=FILESYSTEM)
public abstract class FileBasedSink<UserT,DestinationT,OutputT>
extends java.lang.Object
implements java.io.Serializable, HasDisplayData
请注意,在下一个版本的Beam中,此API将被弃用。然而,与此同时:
是要写入的PCollection元素的类型-UserT
转换将适用于WriteFiles
PCollection
是将直接传递到接收器的output
的低级记录类型。它与Writer
不同,因为某些接收器具有“格式化功能”,例如Avro可以将任何记录转换为UserT
genericord
通过UserT
映射到DynamicDestinations.formatRecord
output
是一种逻辑类型,用于支持同时写入多个目标,例如,将不同类型的事件写入不同目录中具有不同模式的Avro文件DestinationT
作为要写入的记录的分组键,使用相同的配置写入具有相同的DestinationT
的记录。请参见DestinationT
:FileBasedSink.dynamicDestination
从getDestination
记录中提取目的地,并使用一系列其他方法生成给定目的地的配置,例如UserT
DynamicAvroDestinations.getSchema
此API不是最佳的—例如,它将这些高级概念(用户类型和目标)引入特定于文件格式的代码中(例如,写入Avro文件)。这就是它被重新设计的原因。请继续关注实现新API的PR。感谢您的解释。从API的用户角度来看,即使它不是最优的,如果它被记录下来也是有帮助的,因为它是用户看到的。在提交重新设计之前,您是否建议保留版本2.0.0?
* @param <OutputT> the type of values written to the sink.`