簡體   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