すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:Pythonクライアントを使用してPrestoジョブを送信する

最終更新日:Jan 11, 2025

このトピックでは、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内の trinotrino-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内の trinotrino-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()