Используйте простой REST API Airbyte для сложной конфигурации

Airbyte — фантастический инструмент, который в последнее время произвел фурор в сообществе специалистов по обработке данных. Это инструмент с открытым исходным кодом для запуска процессов ELT (извлечение, загрузка и преобразование). Это отличная замена дорогому программному обеспечению, такому как Fivetran, и может сэкономить вашей компании тысячи долларов каждый месяц.

С этого момента я буду предполагать, что у вас есть практические знания о том, как устроен Airbyte и как вы будете использовать его в производственной среде.

Airbyte великолепен, однако в его нынешнем виде Airbyte не имеет первоклассной поддержки планирования синхронизации соединений в стиле cron. Это произойдет очень скоро, но еще не совсем готово, и моя компания использует более старую версию Airbyte, которую пока не нужно обновлять.

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

Но не бойтесь! Airbyte не только предоставляет отличный пользовательский интерфейс для управления вашими процессами ELT, но также предоставляет HTTP REST API, который позволяет вам использовать запросы POST для запуска соединений из внешнего источника.

Полная документация по API находится здесь, но если вы продолжите чтение, я покажу вам, как вы можете использовать Crontab и Python для запуска синхронизации по собственному расписанию. Конечно, вы можете использовать для этого любые инструменты и языки, которые вам нравятся.

⚙️ Подключение к API

Все конечные точки, предоставляемые Airbyte, являются конечными точками POST, что упрощает взаимодействие с ними. Поскольку Airbyte контейнеризирован, я предполагаю, что вы используете все порты по умолчанию, с которыми поставляется Airbyte, и что вы собираетесь запускать свой скрипт Python на той же машине.

Следующий код очень прост и будет использовать API для одновременного запуска всех включенных соединений, но он должен дать вам достаточное представление о конечных точках, которые вам нужно будет использовать.

Если вы используете Python, вам нужно убедиться, что у вас установлен модуль requests, а затем начать с написания функции для получения рабочих областей Airbyte, связанных с вашей установкой:

Каждое рабочее пространство в Airbyte будет иметь несколько источников, несколько пунктов назначения и несколько соединений, которые определяют поток данных от источника к пункту назначения. Чтобы запустить синхронизацию, нам сначала нужно получить список подключений для каждой рабочей области, а затем запустить каждое из них по отдельности. Мы можем сделать это с помощью следующих двух функций:

Затем все, что нам нужно сделать, это упаковать это в аккуратный маленький пакет, в результате чего вся программа будет выглядеть так:

И это все, что касается Python. Осталось только запланировать запуск этого скрипта!

🕒 Планирование синхронизации Airbyte

Опять же, вы можете использовать для этого все, что вам нравится, но мне нравится использовать Crontab, потому что это легко и быстро. Было бы также целесообразно настроить приведенный выше сценарий для использования пакета Python schedule и запускать его в фоновом режиме все время.

Если вы решили, что просто хотите использовать Crontab, убедитесь, что он установлен на вашем компьютере. Мне нравится использовать Crontab.guru, чтобы убедиться, что я получу расписание, которое хочу. Я не собираюсь давать здесь полное руководство, но если вы хотите запускать синхронизацию Airbyte между 6:00 и 18:00 в час, вы должны вставить следующую строку в свой Crontab с помощью команды crontab -e:

00 6-18 * * * python3 force_airbyte_sync.py

Сохраните свой Crontab и убедитесь, что он правильно вставлен с помощью crontab -l. Затем сядьте поудобнее, расслабьтесь и получайте удовольствие, тратя на процесс ELT на 50 % меньше!

Надеюсь, этот пост был полезен хотя бы некоторым из вас! Если у вас есть какие-либо вопросы, не стесняйтесь комментировать этот пост или пишите мне по адресу [email protected]. Я люблю болтать о данных и обо всем, что связано с инженерией, так почему бы не начать разговор!

Вы также можете найти меня на GitHub или связаться со мной на LinkedIn! Я люблю писать о своих проектах, так что вы также можете подписаться на меня в Medium.



На этом все! Надеюсь, вам понравилось, и мы будем очень признательны за любой отзыв!