Тайм-аут операции ReadFromDatastore при чтении сущности 200 000+ без фильтров неравенства, без данных, поступающих в конвейер - PullRequest
0 голосов
/ 06 апреля 2019

Я использую Google Cloud Dataflow для Python SDK, чтобы прочитать 200k + сущностей из хранилища данных, используя функцию ReadFromDatastore() для запроса без каких-либо фильтров.

def make_example_entity_query():
    """
    make an unfiltered query on the `ExampleEntity` entity
    """
    query = query_pb2.Query()
    query.kind.add().name = "ExampleEntity"
    return query

Затем я выполняю некоторую работу вконвейер с этим запросом

p = beam.Pipeline(options=PipelineOptions.from_dictionary(pipeline_options))
(
        p
        | 'read in the new donations from Datastore'
        >> ReadFromDatastore(project, query, None)
        |'protobuf2entity transformation'
        >> beam.Map(entity_from_protobuf)
        | 'do some work or something'
        >> beam.Map(lambda item: item[0] + item[1])
)
return p.run()

работает локально, используя данные тестирования порядка нескольких тысяч записей, но когда я развертываю его в облаке и запускаю в нашей производственной базе данных с более чем 200 тысячами элементов, это просточерез час или около того без какого-либо прогресса.Кажется, что он полностью застрял в считываемой части.

enter image description here

также показывает, что было прочитано ноль элементов

enter image description here

и похоже, что только один рабочий когда-либо раскручивался

enter image description here

Так что я не совсемуверен, что здесь происходит.Мои вопросы:

  1. Существует ли какое-то разумное ограничение на объем данных, которые могут быть считаны из хранилища данных в качестве входных данных для конвейера?
  2. Почему, по-видимому, нет данных, делающих егов трубопровод вообще?Если я запускаю это локально, я вижу, как данные передаются через него, хотя и довольно медленно.
  3. Почему вращается только один работник?Я знаю, что если у вас есть фильтры для операции чтения, это приводит к тому, что чтение выполняется из одного узла, но это делается без фильтров неравенства для чтения из хранилища данных.

1 Ответ

0 голосов
/ 08 апреля 2019

Эта проблема решается в выпуске Github .Пожалуйста, обратитесь к этому.

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