このトピックでは、Pythonクライアントを使用してACK上のTrinoにアクセスし、クエリ操作を実行する方法について説明します。
背景情報
Trino Java DataBase Connectivity (JDBC) および関連パラメータの詳細については、「trino-python-client」をご参照ください。
前提条件
新しいE-MapReduce (EMR) コンソールのEMR on ACKページで、Prestoクラスタが作成されています。詳細については、「はじめに」をご参照ください。
AliyunOSSFullAccessポリシーとAliyunDLFFullAccessポリシーがアカウントにアタッチされています。詳細については、「ロールに権限を付与する」をご参照ください。
開発環境にPython、pip、Trino Python Database API (DBAPI)、またはSQLAlchemyがインストールされています。詳細については、「環境要件」をご参照ください。
Trino DBAPIを使用してACK上のTrinoにアクセスする
URL: [アクセスリンクとポート] タブで、Trino Web UIにアクセスするために使用するURLを取得できます。次に、URL内のtrinoをtrino-cliに変更します。ユーザー名とパスワード:デフォルトのユーザー名
adminと、ユーザーに設定したパスワードが使用されます。
サンプル DBAPI.python ファイル:
from trino.dbapi import connect
from trino.auth import BasicAuthentication
conn = connect(
port=443,
# URLです。
host="trino-cli.c-xxx.xxx.cn-hangzhou.alicontainer.com",
# ユーザー名とパスワードです。
auth=BasicAuthentication("xxx", "xxx"),
http_scheme="https",
verify=False
)
cur = conn.cursor()
cur.execute("show catalogs")
rows = cur.fetchall()SQLAlchemyを使用してACK上のTrinoにアクセスする
URL: [アクセスリンクとポート] タブで、Trino Web UIにアクセスするために使用するURLを取得できます。次に、URL内のtrinoをtrino-cliに変更します。ユーザー名とパスワード:デフォルトのユーザー名
adminと、ユーザーに設定したパスワードが使用されます。
サンプル SQLAlchemy.python ファイル:
from sqlalchemy import create_engine
from sqlalchemy.sql.expression import text
from trino.auth import BasicAuthentication
engine = create_engine(
# URLです。
"trino://trino-cli.c-xxx.xxx.cn-hangzhou.alicontainer.com:443",
connect_args={
# ユーザー名とパスワードです。
"auth": BasicAuthentication("xxx", "xxx"),
"http_scheme": "https",
"verify": False,
}
)
connection = engine.connect()
rows = connection.execute(text("show catalogs")).fetchall()