AWS Glue Job вылетает каждый раз, когда я вызываю .egg из пути к библиотеке Python - PullRequest
0 голосов
/ 04 июня 2019

Я запускал свой скрипт на Python локально, и он работает.Я намерен установить простое соединение с базой данных PostgreSQL и выполнить запрос.Для этого мне нужно импортировать следующие модули Python:

импорт панд как pd импорт pandas.io.sql как psql импорт boto3 импорт psycopg2 как pg

Первые три, AWS Glue Job уже имеетимеется в наличии.Psycopg2 должен быть импортирован в виде файла .egg, как показано на https://www.helicaltech.com/external-python-libraries-aws-glue-job/,, и позже должен быть доступен в корзине S3.

Итак, я создал свою работу AWS Glue Job с помощью моего простого сценария и добавил.egg файл как путь к моей библиотеке Python.Когда код выполняется, он распознает первые три модуля.Последний с успехом открывает файл .egg.Однако, когда он достиг init .py файла, он падает на первое, что видит:

из psycopg2._psycopg import (...).

Что я делаю не так?Должен ли init .py быть пустым?Я пробовал с другими библиотеками, и он всегда вылетает в первой строке init .py

1 Ответ

0 голосов
/ 05 июня 2019

Клей AWS не поддерживает яичные файлы. Вместо этого создайте zip-файл для библиотек python, которые вы хотите использовать. Документально подтверждено AWS Glue:

Если библиотека не содержится в одном файле .py, ее следует упаковать в архив .zip

Также AWS Glue поддерживает только чистые модули Python. См. Следующую цитату из документации aws

Вы можете использовать модули расширения Python и библиотеки с вашим AWS Glue Сценарии ETL, если они написаны на чистом Python. Библиотеки C такие как панды не поддерживаются в настоящее время, и не расширения написаны на других языках.

Справка: Использование библиотек python с AWS Glue

...