Что вернуть из коллекции apache beam, чтобы написать в bigquery - PullRequest
1 голос
/ 01 февраля 2020

Я читаю документацию по лучу и некоторые вопросы stackoverflow / ответы , чтобы понять, как мне написать сообщение pubsub в bigquery. На данный момент у меня есть рабочий пример получения protobuf сообщений и возможности decode их. код выглядит следующим образом

(p
 | 'ReadData' >> apache_beam.io.ReadFromPubSub(topic=known_args.input_topic, with_attributes=True)
 | 'ParsePubsubMessage' >> apache_beam.Map(parse_pubsubmessage)
 )

В конце концов, я хочу написать декодированное сообщение pub-sub в bigquery. все атрибуты (и декодированные байтовые данные) будут иметь сопоставление столбцов один к одному.

Так что меня смущает то, что должен parse_pubsubmessage вернуть. На данный момент он возвращает пользовательский класс со всеми полями, т.е.

class DecodedPubsubMessage:
    def __init__(self, attr, event):
        self.attribute_one = attr['attribute_one']
        self.attribute_two = attr['attribute_two']

        self.order_id = event.order.order_id
        self.sku = event.item.item_id
        self.triggered_at = event.timestamp
        self.status = event.order.status

Это правильный подход для выполнения этого потока данных? То, что я думал, что я буду использовать это возвращенное значение, чтобы написать в bigquery, но из-за продвинутой функции python я не могу понять, как это сделать. Вот ссылка пример , на которую я смотрел. Из этого примера я не уверен, как мне сделать карту lambda на возвращенном объекте для записи в bigquery.

...