AWS Клей psycopg2 монтажный - PullRequest
       71

AWS Клей psycopg2 монтажный

0 голосов
/ 04 августа 2020

Я пытаюсь запустить код, который использует psycopg2 для управления экземпляром Redshift. Я попытался импортировать файл колеса, так как вижу, что они поддерживаются в заданиях Glue python. Я вижу, что библиотека установлена ​​в конечной точке при запуске, но затем я получаю сообщение об ошибке:

import boto3
import psycopg2
Aug 4, 2020, 1:24:06 PM Pending execution
Processing ./glue-python-libs-92ng4pcb/psycopg2-2.8.5-cp36-cp36m-win_amd64.whl
Installing collected packages: psycopg2
Successfully installed psycopg2-2.8.5
Considering file without prefix as a python extra file s3://gluelibraries/boto3.zip
WARNING: The directory '/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

2020-08-04T13:24:44.831+02:00
Traceback (most recent call last):
  File "/tmp/runscript.py", line 123, in <module>
    runpy.run_path(temp_file_path, run_name='__main__')
  File "/usr/local/lib/python3.6/runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "/usr/local/lib/python3.6/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/local/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/glue-python-scripts-1t08aq9n/postloading.py", line 6, in <module>
  File "/glue/lib/installation/psycopg2/__init__.py", line 51, in <module>
    from psycopg2._psycopg import (                     # noqa
ModuleNotFoundError: No module named 'psycopg2._psycopg'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/tmp/runscript.py", line 142, in <module>
    raise e_type(e_value).with_traceback(new_stack)
  File "/tmp/glue-python-scripts-1t08aq9n/postloading.py", line 6, in <module>
  File "/glue/lib/installation/psycopg2/__init__.py", line 51, in <module>
    from psycopg2._psycopg import (                     # noqa
ModuleNotFoundError: No module named 'psycopg2._psycopg'

Теоретически задания Glue в python (в отличие от заданий pyspark) должны поддерживать не чистые python библиотеки

Ответы [ 3 ]

0 голосов
/ 04 августа 2020

Вместо psycopg2 попробуйте использовать pg8000, который легко установить и не имеет c зависимостей. Кроме того, он используется Amazon в большинстве своих внутренних проектов.

0 голосов
/ 07 августа 2020

После попытки использовать pg8000 с конечной точкой Python я получил следующую ошибку:

Traceback (most recent call last):
  File "/tmp/runscript.py", line 123, in <module>
    runpy.run_path(temp_file_path, run_name='__main__')
  File "/usr/local/lib/python3.6/runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "/usr/local/lib/python3.6/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/local/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/glue-python-scripts-j7khvbvv/postloading.py", line 7, in <module>
ModuleNotFoundError: No module named 'pg8000'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/tmp/runscript.py", line 142, in <module>
    raise e_type(e_value).with_traceback(new_stack)
  File "/tmp/glue-python-scripts-j7khvbvv/postloading.py", line 7, in <module>
ModuleNotFoundError: No module named 'pg8000'

при использовании конечной точки pyspark У меня нет этой проблемы с pg8000

0 голосов
/ 04 августа 2020

Я столкнулся с аналогичной проблемой с пакетом psycopg2. Это связано с совместимостью со средой выполнения Python, которая обращается к модулю psycopg2.

Следуйте этой теме. Надеюсь, у вас будет свое решение. Использование psycopg2 с Lambda для обновления Redshift (Python)

...