Не удается вставить значения из pubsub в большой запрос в GCP - PullRequest
0 голосов
/ 04 января 2019

Я новичок в Python Apache Beam и пытаюсь выполнить задачу, чтобы получить значения из pubsub и передать их в большой запрос, используя поток данных Google Cloud.Ниже приведены шаги, которые я выполнил для этого сценария.

1) данные помещаются как json в тему pubsub.{----- record1 ----} {--- record2 ---} и т. д.

2) Большая таблица запросов следует точно так же, как и json, отправленный в pubsub, и всестолбцы имеют строковый тип.

3) Ниже приведен код для сценария

pipeline_options.view_as(StandardOptions).streaming = True
p_bq = beam.Pipeline(options=pipeline_options)
logging.info('Start')

BQ_data1 = (p_bq 
            | 'readPubSub' >> beam.io.ReadFromPubSub(subscription='subscriptionname') 
            | 'writeBQ' >> beam.io.WriteToBigQuery(table='table name', 
                                                   dataset='dataset',
                                                   project='projectname'))
result_bq = p_bq.run()

Ожидаемый результат: передача значения из pubsub в большой запрос

Фактический результат:AttributeError: у объекта 'str' нет атрибута 'items'

1 Ответ

0 голосов
/ 04 января 2019

Вы, вероятно, получаете необработанные строки из pubsub, а не объекты Python.Скорее всего, вам нужно разобрать строки json в объекты (или словари) python, прежде чем вы сможете записать их в BQ.Смотрите этот пример: https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/windowed_wordcount.py#L71

...