Google Composer - Как установить драйверы Microsoft SQL Server ODB C в средах - PullRequest
1 голос
/ 22 февраля 2020

Я новичок в GCP и Airflow и пытаюсь запустить свои python конвейеры через простое соединение PYODB C через python 3. Однако я считаю, что нашел то, что мне нужно установить на машины [ Microsoft doc] https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017, но я не уверен, где go в GCP для выполнения этих команд. Я пробежал несколько глубоких дыр в поисках ответов, но не знаю, как решить проблему

Вот ошибка, которую я вижу, когда загружаю DAG:

Воздушный поток Ошибка

Вот соединение PYODB C:

pyodbc.connect('DRIVER={Microsoft SQL Server};SERVER=servername;DATABASE=dbname;UID=username;PWD=password')

Когда я открываю свою оболочку gcloud в средах и запускаю Microsoft, загрузка просто прерывается, когда я загружаю SDK и подключаюсь для проецирования из локальной загрузки он автоматически прерывается или не распознает команды от Microsoft. Может кто-нибудь дать простую инструкцию, с чего начать и что я делаю не так?

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Учтите, что Composer является управляемой Google реализацией Apache Airflow, поэтому ожидайте, что она будет вести себя по-другому.

С учетом этого пользовательские Python зависимости и двоичные зависимости недоступны в облаке Composer рабочий образ может использовать параметр KubernetesPodOperator.

По сути, это позволяет вам создать пользовательский образ контейнера со всеми вашими требованиями , pu sh в хранилище образов контейнеров (Dockerhub, GCR), а затем перетащите его в среду Composer, чтобы все ваши зависимости были соблюдены.

Это возрастает лучше, так как в этом нет необходимости вам нужно взаимодействовать с машинами (этот подход изложен в вашем первоначальном вопросе), и вам будет проще просто создать свой контейнерный образ с тем, что вам нужно.

В частности, говоря о pyodbc и в этом контексте при установке зависимостей с использованием Composer, существует запрос функции для решения этой проблемы, который также описывает обходной путь (в основном то, что упоминается в этом ответе). Вы можете проверить это.

0 голосов
/ 26 февраля 2020

Облако Composer в настоящее время в основном поддерживает установку пакетов PyPI, написанных на чистом Python. В настоящее время установка системных пакетов не поддерживается полностью, но есть некоторые обходные пути (например, установка LD_LIBRARY_PATH и загрузка общих библиотек и т. Д. c). Вы получаете прерывания, потому что вы установили часть пакета Python, но не системные зависимости, от которых зависит пакет Python.

Как вы читаете, изменения в работниках Airflow в Composer эфемерны ( или, по крайней мере, должно рассматриваться как таковое), но один из способов обойти это - установить пакеты, используя BashOperator до задачи, которая требует запуска библиотеки. Это не красиво, но гарантирует, что зависимости установлены на работнике до вызова нужного кода Python.

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