Код: Выделить всё
AvroCoderПроблема
У меня есть неизменная класс, определяемый с использованием Lombok:
Код: Выделить всё
@Builder
@Value
public class EventWrapper {
private final byte[] inputPayload;
private final Map attributes;
// No default constructor - class is immutable
}
< /code>
В моем тесте на конвейер пучка: < /p>
AvroCoder coder = AvroCoder.of(EventWrapper.class);
PCollection input = pipeline.apply(
Create.of(TestUtil.buildEventWrapper()).withCoder(coder)
);
PCollection result = input.apply(
"Process Events",
ParDo.of(new EventProcessorDoFn())
);
// Assertions...
pipeline.run().waitUntilFinish();
Ошибка на Directrunner
на Directrunner
Код: Выделить всё
java.lang.RuntimeException: java.lang.NoSuchMethodException: EventWrapper.()
at org.apache.avro.specific.SpecificData.newInstance(SpecificData.java:493)
...
at org.apache.beam.sdk.transforms.Create$Values$2.apply(Create.java:430)
[*]Apache Beam: 2.64.0
[*]Java: 17
[*]Local: macOS, DirectRunner
Remote: GCP DataFlow < /li>
< /ul>
Мои вопросы: < /h3>
Почему Avrocoder.of (eventwrapper.class) < /code> gcp dataflow, но локально не выполняет локально с дирректриннером? /> Существуют ли различия в том, как сериализация обрабатывается между Directrunner и Dataflow?>
Подробнее здесь: https://stackoverflow.com/questions/796 ... rks-on-gcp