繁体   English   中英

AWS Python Shell-如何使用Glue目录连接

[英]AWS Python Shell - How to use Glue Catalog Connections

我在Glue中定义了一个JDBC连接,并且能够在Glue Spark作业中成功使用它。 我如何在Glue Python Shell作业中使用相同的连接? 尽管我看到了可能的引用,但找不到任何模板该如何做。

另一种选择是如何在Python Shell中定义JDBC连接,我需要在其中包含一个外部库? 由于依赖性,我读过的pyodbc不可用。

当您将JDBC连接附加到Glue Python Shell作业时,Glue只能使用它来启动具有安全组的指定子网中的ENI。 jdbc url,用户名和密码对于Python Shell作业没有任何值。

因此,您必须提供一个外部软件包,例如pymssql( http://www.pymssql.org/en/stable/ ),并通过脚本本身初始化连接。

您可以参考提供自己的Python库的文档: https : //docs.aws.amazon.com/glue/latest/dg/add-job-python.html#create-python-egg-library

这是代码。 确保在python shell作业cloudformation模板中添加了相同的连接。 我们正在使用pg8000库。

def get_connection(self, conn_name):

        client = boto3.client('glue', region_name=self.region_id)
        response = client.get_connection(Name=conn_name)
        print response

        connection_properties = response['Connection']['ConnectionProperties']
        URL = connection_properties['JDBC_CONNECTION_URL']
        url_list = URL.split("/")

        host = "{}".format(url_list[-2][:-5])
        port = url_list[-2][-4:]
        database = "{}".format(url_list[-1])
        user = "{}".format(connection_properties['USERNAME'])
        pwd = "{}".format(connection_properties['PASSWORD'])

        # print "user:{}".format(user)
        # print "pwd:{}".format(pwd)
        # print "host:{}".format(host)
        # print "port:{}".format(port)
        # print "database:{}".format(database)

        rs_conn = dbapi.connect(database=database, host=host, port=5439, \
                                user=user, password=pwd, ssl=True)
        cur = rs_conn.cursor()
        cur.execute("set statement_timeout = 1200000")
        rs_conn.commit()
        cur.close()
        return rs_conn

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM