Я получаю данные protobuf из google pub / sub и десериализирую данные в объект типа Message. Итак, я получаю PCollection<Message>
объект типа. Вот пример кода:
public class ProcessPubsubMessage extends DoFn<PubsubMessage, Message> {
@ProcessElement
public void processElement(@Element PubsubMessage element, OutputReceiver<Message> receiver) {
byte[] payload = element.getPayload();
try {
Message message = Message.parseFrom(payload);
receiver.output(message);
} catch (InvalidProtocolBufferException e) {
LOG.error("Got exception while parsing message from pubsub. Exception =>" + e.getMessage());
}
}
}
PCollection<Message> event = psMessage.apply("Parsing data from pubsub message",
ParDo.of(new ProcessPubsubMessage()));
Я хочу применить преобразование PCollection<Message> event
для записи в формате паркета. Я знаю, что Apache Beam предоставил ParquetIO , но он отлично работает для PCollection<GenericRecord>
типа, и преобразование из Message
в GenericRecord
может решить проблему (пока не знаю, как это сделать). Есть какой-нибудь простой способ написать в формате паркета?