Объект 'module' не имеет атрибута 'WriteToBigQuery' при запуске Apache Beam на Google App Engine Flex

У меня есть Google App Engine, запускающий конвейер Cloud DataFlow. Этот конвейер должен записать окончательную коллекцию PCollection в Google BigQuery, но я не могу найти способ установить правильную зависимость apache_beam.io.

Я использую Apache Beam версии 2.2.0 локально.

Структура проекта соответствует коду из это сообщение в блоге.

Это соответствующий фрагмент кода:

"WriteToBigQuery" >> beam.io.WriteToBigQuery(
            ("%s:%s.%s" % (PROJECT, DATASET, TABLE)),
            schema=TABLE_SCHEMA,
            create_disposition=beam.io.BigQueryDisposition.CREATE_IF_NEEDED,
            write_disposition=beam.io.BigQueryDisposition.WRITE_APPEND
        )

Когда я запускаю этот код локально, beam.io.WriteToBigQuery() вызывается правильно. Он получен из apache_beam/io/gcp/bigquery.py моей виртуальной среды.

Но я не могу установить эту зависимость в свою папку lib, которая поставляется с приложением при развертывании.

Несмотря на то, что у меня есть файл требований, содержащий apache-beam[gcp]==2.2.0 в качестве требования, когда я запускаю pip install -r requirements.txt -t lib, apache_beam/io/gcp/bigquery.py, загруженный в мою папку lib, не содержит класса WriteToBigQuery, а затем я получаю сообщение об ошибке 'module' object has no attribute 'WriteToBigQuery' при запуске приложения на Google App Engine.

Есть ли у кого-нибудь идеи, как я могу получить право bigquery.py?


person Hannon Queiroz    schedule 09.02.2018    source источник
comment
Вы используете это в App Engine, а не в DataFlow?   -  person Maximilian    schedule 10.02.2018
comment
Какая версия Beam у вас установлена?   -  person Maximilian    schedule 10.02.2018
comment
@Maximilian, конвейер запускается в DataFlow, но запускается из экземпляра App Engine как в этом проекте. И я использую Apache Beam 2.2.0. Спасибо!   -  person Hannon Queiroz    schedule 12.02.2018
comment
Это странно. Я ясно вижу этот класс в apache_beam/io/gcp/bigquery.py. Что вы видите в этом файле?   -  person Maximilian    schedule 12.02.2018


Ответы (1)


Это не сразу очевидно, но для запуска в App Engine, как указано в сообщение в блоге необходимо создать setup.py (даже если у вас уже есть requirements.txt) и указать на него с помощью параметра командной строки --setup_file ./setup.py при запуске конвейера.

person David Cavazos    schedule 11.12.2019