Могу ли я использовать поток данных Google с собственным python?

# #python #google-cloud-dataflow #apache-beam #serverless

Вопрос:

Я пытаюсь построить конвейер python ETL в облаке Google, и поток данных google cloud показался мне хорошим вариантом. Когда я изучил документацию и руководства разработчика, я увидел, что луч apache всегда привязан к потоку данных, поскольку он основан на нем. Я могу обнаружить проблемы с обработкой моих кадров данных в apache beam.

Мои вопросы таковы:

  • если я хочу создать свой ETL-скрипт на родном python с потоком данных, возможно ли это? Или для моего ETL необходимо использовать apache beam?
  • Если поток данных был построен только для использования Apache Beam? Существует ли какой-либо бессерверный облачный инструмент Google для создания python ETL (функция Google cloud имеет время выполнения 9 минут, что может вызвать некоторые проблемы с моим конвейером, я хочу избежать ограничения на выполнение)

Мой конвейер нацелен на чтение данных из BigQuery, их обработку и повторное сохранение в таблице bigquery. Я могу использовать некоторые внешние API внутри своего скрипта.

Ответ №1:

Что касается вашего первого вопроса, похоже, что поток данных был изначально написан для его использования вместе с Apache SDK, как можно проверить в официальной документации Google Cloud по потоку данных. Таким образом, возможно, что на самом деле требуется использовать Apache Beam для вашего ETL.

Что касается вашего второго вопроса,то в этом руководстве вы узнаете, как создать свой собственный конвейер ETL с функциями Python и облачной платформы Google, которые на самом деле не являются серверами. Не могли бы вы подтвердить, помогла ли вам эта ссылка?

Комментарии:

1. Спасибо @MariCruzR за ответ. Я подумал о функциях GC, и на самом деле это была моя первая мысль. Но минусы в том, что у него есть ограничение на выполнение 9 минут. Мои данные не будут обрабатывать более 1 млн записей, но я боюсь, что для выполнения логики моего сценария может потребоваться больше времени. Вот почему я подумал о другом, менее ограниченном решении

2. К какому конкретно сроку вы стремитесь?

3. «По умолчанию время ожидания функции истекает через 1 минуту, но вы можете продлить этот период до 9 минут. Когда время выполнения функции превышает тайм-аут, вызывающему немедленно возвращается состояние ошибки».

4. Я не имел в виду Облачную функцию, мне было интересно, сколько времени, по вашему мнению, займет ваш сценарий, просто чтобы отбросить возможности. Я приношу извинения за путаницу.

5. Возможно, вам следует подумать об использовании Google App Engine — приложения на основе python, которое может обрабатывать большие объемы данных и на самом деле является бессерверным решением.

Ответ №2:

Что касается вашего первого вопроса, поток данных должен использовать Apache Beam. На самом деле, до Apache Beam существовало что-то под названием Dataflow SDK, которое было собственностью Google, а затем было открыто для Apache Beam.

Пакет SDK Python Beam довольно прост, если вы приложите к нему немного усилий, а основные операции процесса, которые вам понадобятся, очень близки к родному языку Python.

Если ваша конечная цель-чтение, обработка и запись в BQ, я бы сказал, что поток данных Beam хорошо подходит.