我正在尝试从AWS Glue访问RDS实例,我在EC2实例中运行了一些python脚本,并且我目前正在使用PYODBC进行连接,但是在尝试安排胶水作业时,我无法导入PYODBC,因为它不是本机的受AWS Glue支持,不确定驱动程序如何在胶壳中工作。
答案 0 :(得分:2)
来自:在AWS Glue announcement中介绍Python Shell作业:
AWS Glue中的Python Shell作业支持与Python 2.7兼容的脚本,并预加载了Boto3,NumPy,SciPy,pandas等库。
module list不包含pyodbc
模块,由于它依赖于libodbc.so.2
和pyodbc.so
库,因此不能作为自定义.egg文件提供。
我认为您有2种选择:
希望有帮助
答案 1 :(得分:0)
对于AWS Glue,请使用Dataframe / DynamicFrame并指定SQL Server JDBC驱动程序。 AWS Glue在其环境中已经包含用于SQL Server的JDBC驱动程序,因此您无需添加任何带有胶粘作业的驱动程序jar。
df1 = spark.read.format(“ jdbc”)。option(“驱动程序”,“ com.microsoft.sqlserver.jdbc.SQLServerDriver”)。option(“ url”,url_src).option(“ dbtable”, dbtable_src).option(“ user”,userID_src).option(“ password”,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”,password_src).load()
作为替代解决方案,您还可以在AWS Glue中运行的python脚本中使用用于SQL Server的jtds驱动程序
答案 2 :(得分:0)
我能够使用python库psycopg2,即使它不是用纯python编写的,也没有预装AWS胶python shell环境。这与aws胶水文档相反。因此,您可以以类似方式使用与odbc相关的python库。我为psycopg2库创建了.egg文件,并在粘胶python外壳环境中成功使用了它。如果脚本中包含import psycopg2
,并且胶粘作业引用了相关的psycopg2 .egg文件,则以下是来自胶粘python shell的日志。
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
答案 3 :(得分:0)
这些是我用来从python胶壳作业连接到RDS的步骤:
完成这些步骤并进行验证后,您就可以连接了。在我的示例中,我使用了pymysql。
答案 4 :(得分:0)
如果任何人都需要使用python shell与sqlalchemy进行postgres连接,则可以通过引用sqlalchemy, scramp, pg8000
wheel文件,通过消除对setup.py
的scramp依赖性从pg8000重构wheel很重要。
答案 5 :(得分:0)
我需要做类似的事情,最终在使用Python进行其他操作的同时在Scala中创建了另一个Glue作业。我知道这可能并不适合所有人,但想提一下How to run DDL SQL statement using AWS Glue