Как подключиться к экземпляру RDS из оболочки AWS Glue Python? - PullRequest
2 голосов
/ 01 мая 2019

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

Ответы [ 3 ]

4 голосов
/ 02 мая 2019

От: Представление рабочих мест оболочки 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. Вместо этого используйте лямбда-функцию. Вам нужно будет упаковать pyodbc и необходимые библиотеки вместе с вашим кодом в zip-файле. Кто-то уже скомпилировал эти библиотеки для AWS Lambda, см. здесь .

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

0 голосов
/ 16 июля 2019

Я смог использовать библиотеку python psycopg2, даже если она написана не на чистом python и не поставляется с предустановленной средой aws glue python shell. Это противоречит документации по клею aws. Таким образом, вы можете использовать библиотеки Python, связанные с odbc, аналогичным образом. Я создал файлы .egg для библиотеки psycopg2 и успешно использовал их в среде оболочки glue python. Ниже приведены журналы оболочки glue python, если в вашем скрипте import psycopg2, а задание склеивания относится к связанным файлам 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 голосов
/ 02 мая 2019

Для 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", (" ваш оператор выбора здесь ") A) .option (" user ", userID_src) .option (" пароль ", password_src) .load ()

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

...