Я пытаюсь получить доступ к инстансу RDS из AWS Glue, у меня есть несколько скриптов python, запущенных в экземплярах EC2, и в настоящее время я использую PYODBC для подключения, но при попытке запланировать задания для склеивания я не могу импортировать PYODBC, поскольку он не поддерживается AWS изначально Клей, не уверен, как драйверы будут работать в клеевой оболочке.

4
EngineJanwaar 1 Май 2019 в 16:12

4 ответа

Лучший ответ

От: Представление рабочих мест оболочки Python в AWS Glue объявление:

Задания оболочки Python в AWS Glue поддерживают сценарии, совместимые с Python 2.7 и поставляемые с предварительно загруженными библиотеками, такими как Boto3, NumPy, SciPy, pandas и другими.

список модулей не включает модуль pyodbc и не может быть предоставлен как пользовательский файл .egg, поскольку он зависит от библиотек libodbc.so.2 и pyodbc.so.

Думаю, у вас есть 2 варианта:

  1. Создайте подключение jdbc к вашей БД из консоли Glue. и использовать внутренние методы Glue для запроса. Это потребует изменения кода, конечно.
  2. Вместо этого используйте лямбда-функцию. Вам нужно pack pyodbc и необходимые библиотеки вместе с вашим кодом в zip-файле. Кто-то уже скомпилировал эти библиотеки для AWS Lambda, см. здесь. ,

Надеюсь, это поможет

4
ya2410 2 Май 2019 в 10:10

Вот шаги, которые я использовал для подключения к RDS из задания оболочки glue python:

  1. Упакуйте свой пакет зависимостей в файл egg (эти пакеты должны быть чисто python, если я правильно помню). Поместите это в S3.
  2. Задайте в своей работе ссылку на этот файл egg в конфигурации задания> Путь к библиотеке Python
  3. Убедитесь, что ваша работа может импортировать пакет / модуль
  4. Создайте связующее соединение с вашей RDS (оно находится в База данных> Таблицы, Соединения), проверьте соединение и убедитесь, что оно может попасть в вашу RDS
  5. Теперь в вашей работе, вы должны установить для него ссылку / использовать это соединение. Он находится в обязательном соединении, когда вы настраиваете свою работу или редактируете свою работу.

После того, как эти шаги выполнены и проверены, вы сможете подключиться. В моем примере я использовал pymysql.

0
noobius 27 Сен 2019 в 23:13

Для AWS Glue используйте Dataframe / DynamicFrame и укажите драйвер JDBC для SQL Server. AWS Glue уже содержит драйвер JDBC для SQL Server в своей среде, поэтому вам не нужно добавлять дополнительные файлы драйвера с заданием на клей.

Df1 = spark.read.format ("jdbc"). option ("драйвер", "com.microsoft.sqlserver.jdbc.SQLServerDriver"). option ("url", url_src) .option ("dbtable", dbtable_src). option ("пользователь", userID_src) .option ("пароль", password_src) .load ()

Если вы используете SQL вместо таблицы:

Df1 = spark.read.format ("jdbc"). option ("драйвер", "com.microsoft.sqlserver.jdbc.SQLServerDriver"). option ("url", url_src) .option ("dbtable", ("< strong> ваш оператор выбора здесь ") A) .option (" user ", userID_src) .option (" пароль ", password_src) .load ()

В качестве альтернативного решения вы также можете использовать драйвер jtds для сервера SQL в своем скрипте python, запущенном в AWS Glue

0
Abraham 16 Май 2019 в 14:12

Я смог использовать библиотеку python psycopg2, даже если она написана не на чистом python и не поставляется с предустановленной оболочкой aws glue python. Это противоречит документации по клею aws. Таким образом, вы можете использовать библиотеки Python, связанные с odbc, аналогичным образом. Я создал файлы .egg для библиотеки psycopg2 и успешно использовал их в среде оболочки glue python. Ниже приведены журналы оболочки glue python, если в вашем скрипте import psycopg2, а задание glue ссылается на связанные файлы psycopg2 .egg.

Creating /glue/lib/installation/site.py
Processing psycopg2-2.8.3-py2.7.egg
Copying psycopg2-2.8.3-py2.7.egg to /glue/lib/installation
Adding psycopg2 2.8.3 to easy-install.pth file
Installed /glue/lib/installation/psycopg2-2.8.3-py2.7.egg
Processing dependencies for psycopg2==2.8.3
Searching for psycopg2==2.8.3
Reading https://pypi.org/simple/psycopg2/
Downloading https://files.pythonhosted.org/packages/5c/1c/6997288da181277a0c29bc39a5f9143ff20b8c99f2a7d059cfb55163e165/psycopg2-2.8.3.tar.gz#sha256=897a6e838319b4bf648a574afb6cabcb17d0488f8c7195100d48d872419f4457
Best match: psycopg2 2.8.3
Processing psycopg2-2.8.3.tar.gz
Writing /tmp/easy_install-dml23ld7/psycopg2-2.8.3/setup.cfg
Running psycopg2-2.8.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-dml23ld7/psycopg2-2.8.3/egg-dist-tmp-9qwen3l_
creating /glue/lib/installation/psycopg2-2.8.3-py3.6-linux-x86_64.egg
Extracting psycopg2-2.8.3-py3.6-linux-x86_64.egg to /glue/lib/installation
Removing psycopg2 2.8.3 from easy-install.pth file
Adding psycopg2 2.8.3 to easy-install.pth file
Installed /glue/lib/installation/psycopg2-2.8.3-py3.6-linux-x86_64.egg
Finished processing dependencies for psycopg2==2.8.3
0
gibbz00 16 Июл 2019 в 17:18