将 BigQuery 数据读取为自定义数据类型时如何避免警告消息:无法验证 BoundedSource 类型的序列化元素

How to avoid warning message when read BigQuery data to custom data type: Can't verify serialized elements of type BoundedSource

我定义了一个自定义数据类型,请参考此处的文档。 https://github.com/apache/beam/blob/master/examples/java/src/main/java/org/apache/beam/examples/snippets/Snippets.java#L127

并使用以下代码从 BigQuery 读取数据。 https://github.com/apache/beam/blob/master/examples/java/src/main/java/org/apache/beam/examples/snippets/Snippets.java#L375

警告信息: 无法验证 BoundedSource 类型的序列化元素是否具有明确定义的 equals 方法。这可能会在某些 PipelineRunner 上产生不正确的结果。

此消息出现在步骤 TriggerIdCreation/Read(CreateSource)/Read(CreateSource)/Read(BoundedToUnboundedSourceAdapter)/StripIds.out0

我尝试像这样将 equals() 方法添加到自定义数据类型 class

    @Override
    public boolean equals(Object object) {
        if (this == object) return true;
        if (object == null || getClass() != object.getClass()) return false;
        if (!super.equals(object)) return false;
        WeatherData that = (ErrorTelop) object;
        return Objects.equals(xxx, that.xxx) &&
               Objects.equals(yyy, that.yyy);
    }

这没有帮助。

有人知道如何避免此警告吗?

您收到的警告似乎与您正在做的任何事情无关。我认为警告来自 Apache Beam 本身正在做的事情。它抱怨的实际类型是 BoundedSource,一种内部 Beam 类型,而不是您的自定义类型,从我查看代码来看,它很可能与那里提到的 BoundedToUnboundedSourceAdapter 有关。

如果您的管道工作正常,那么您可以忽略它。如果您确实想提醒某人,您可以 contact Beam 用户或开发人员列表。