Код: Выделить всё
gs://bucket/file-timestamp.avroКод: Выделить всё
# Python code
pipeline
| "Read from Pub/Sub" >> beam.io.ReadFromPubSub(subscription=input_subscription)
| "Read Avro Files" >> avroio.ReadAllFromAvro(with_filename=True)
Из -за некоторых ограничений в Python мы должны преобразовать наш код в Java. Мы можем прочитать из Pubsub Light, однако, мы еще не знаем, как использовать Avroio , чтобы получить результирующую PCOLLECTION без указания схемы.
Код: Выделить всё
// Java code
pipeline
.apply("Read from Pub/Sub", PubsubIO.fromSubscription(options.getInputSubscription()))
.apply("Read Avro Files", AvroIO.__________________)
Код: Выделить всё
pipeline
.apply("Read from Pub/Sub", PubsubIO.fromSubscription(options.getInputSubscription()))
.apply("Read Avro Files", FileIO.matchAll())
.apply(FileIO.readMatches())
.apply(AvroIO.parseFilesGenericRecords(record -> record))
< /code>
Код выше приведет меня к некоторому прогрессу, но тогда жалуется, что я должен предоставить кодировщик < /p>
java.lang.IllegalArgumentException: Unable to infer coder for output of parseFn. Specify it explicitly using withCoder()
< /code>
, который в последней строке должен выглядеть следующим образом: < /p>
.apply(AvroIO.parseFilesGenericRecords(record -> record).withCoder(someCoder))
Подробнее здесь: https://stackoverflow.com/questions/747 ... ericrecord