При использовании модуля Beam IO ReadFromPubSub вы можете получать сообщения с атрибутами в Python? Неясно, поддерживается ли - PullRequest
0 голосов
/ 24 марта 2019

Попытка вытащить сообщения с атрибутами, хранящимися в PubSub, в конвейер Beam.Мне интересно, была ли добавлена ​​поддержка для Python, и поэтому я не могу их прочитать.Я вижу, что он существует в Java.

pipeline_options = PipelineOptions()
pipeline_options.view_as(StandardOptions).streaming = True

pipeline = beam.Pipeline(options=pipeline_options)
messages = (pipeline | beam.io.ReadFromPubSub(subscription=subscription_name).with_output_types(bytes))

def printattr(element):
    print(element.attributes)


lines = messages | 'printattr' >> beam.Map(printattr)

result = pipeline.run()
result.wait_until_finish()

Предполагается, что он сможет перечислять атрибуты-данные:

b'Message number 1109'
-     attributes: {
-       "_comments": "nan",
-       "_direction": "SE",
-       "_fromst": "Harlem",
-       "_last_updt": "2019-03-20 21:11:02.0",
-       "_length": "0.56",
-       "_lif_lat": "41.9809967484",
-       "_lit_lat": "41.9787314076",
-       "_lit_lon": "-87.7964600566",
-       "_strheading": "W",
-       "_tost": "Oak Park",

, но я могу только просматривать информацию, хранящуюся в данныхполе - не атрибуты.

1 Ответ

1 голос
/ 24 марта 2019

После просмотра документации: https://beam.apache.org/releases/pydoc/2.11.0/apache_beam.io.gcp.pubsub.html, Мне удалось увидеть дополнительный аргумент для передачи в ReadFromPubSub.

Необходимо установить 'with_attributes = True', в противном случае вы просто получите поля данных.

Надеюсь, это поможет кому-то, кто может застрять или просто устать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...