Использование сообщений Protobuf в Pcollection в Apache Beam с использованием Go вызывает ошибку

avatar
JeffKing54
9 августа 2021 в 01:30
143
1
0
func processPubSubMsgFn(ctx context.Context, in *pubsub.PubsubMessage) v1.someProto {
    someProto := &v1.someProto{}
    if err := proto.Unmarshal((in.Data), someProto); err != nil {
        log.Fatalln("Failed to parse address book:", err)
    }
    return *someProto
}

Причины: неверный тип возвращаемого значения вызванный: структура кодирования v1.someProto тип имеет неэкспортированное поле: состояние

При попытке запустить конвейер в java я устанавливал кодировщик для типа сообщения, но не знаю, как это сделать в версии Go Apache Beam

Источник
JeffKing54
9 августа 2021 в 13:01
0

Мне пришлось добавить beam.RegisterType(reflect.TypeOf(v1. someProto{})) в функцию init().

Ответы (1)

avatar
Jaroslaw
9 августа 2021 в 07:00
1

Из того, что я вижу в apache beam sdk, вы должны вернуть *v1.someProto вместо v1.someProto.

JeffKing54
9 августа 2021 в 11:52
0

Спасибо за помощь, да, вы правы, что сработало.