Google cloud dataflow 我们选择的编码器是否会显著影响性能?

Google cloud dataflow 我们选择的编码器是否会显著影响性能?,google-cloud-dataflow,Google Cloud Dataflow,我很难理解“编码员”的目的。我的理解是,我们选择编码器是为了“教”数据流如何以字节格式对特定对象进行编码,以及如何评估相等性和哈希代码 默认情况下,也许是错误的,我倾向于在几乎所有自定义类上使用“implementserializable”这个词。这具有数据流不会抱怨的优点。然而,因为其中一些类是巨大的对象,我想知道性能是否会受到影响,相反,我应该实现一个自定义编码器,在其中我确切地指定哪一个或两个字段可以用来确定相等和哈希代码等。这有意义吗?换句话说,创建自定义编码器(可能只使用一个或两个小的

我很难理解“编码员”的目的。我的理解是,我们选择编码器是为了“教”数据流如何以字节格式对特定对象进行编码,以及如何评估相等性和哈希代码


默认情况下,也许是错误的,我倾向于在几乎所有自定义类上使用“implementserializable”这个词。这具有数据流不会抱怨的优点。然而,因为其中一些类是巨大的对象,我想知道性能是否会受到影响,相反,我应该实现一个自定义编码器,在其中我确切地指定哪一个或两个字段可以用来确定相等和哈希代码等。这有意义吗?换句话说,创建自定义编码器(可能只使用一个或两个小的基元字段)而不是默认的串行编码器是否可以提高大型类的性能?

与其他形式的编码相比,Java序列化速度非常慢,并且肯定会导致性能问题。但是,仅序列化对象的一部分意味着在进程之间发送对象时,对象的其余部分将被删除

使用Serializable比使用Serializable要好得多,而且非常简单,您可以使用

@DefaultCoder(AvroCoder.class)
这将自动从类中推断出Avro模式。请注意,这不适用于泛型类型,因此在这种情况下,您可能希望使用自定义编码器