Trino は、複数のデータソースにまたがるインタラクティブな分析のために設計された、オープンソースの分散 SQL クエリエンジンです。 E-MapReduce (EMR) Trino ノードを設定して、大規模な多次元データ集約とレポート作成を実行できます。
前提条件
-
Alibaba Cloud EMR クラスターを作成し、DataWorks に登録します。 詳細については、「新しい Data Studio:EMR 計算リソースのアタッチ」をご参照ください。
-
(オプション、RAM ユーザー向け) タスク開発用の Resource Access Management (RAM) ユーザーをワークスペースに追加し、Development または スペース管理者 ロール (このロールには広範な権限が含まれるため、慎重に付与する必要があります) を割り当てる必要があります。 詳細については、「ワークスペースメンバーの追加」をご参照ください。
ルートアカウントを使用している場合は、このステップをスキップしてください。
制限事項
-
EMR Trino ノードは、サーバーレスリソースグループでのみ実行できます。
-
DataWorks でデータレイクまたはカスタムクラスターのメタデータを管理するには、まずクラスターに EMR-HOOK を設定する必要があります。 詳細については、「Hive 用の EMR-HOOK の設定」をご参照ください。
説明クラスターに EMR-HOOK が設定されていない場合、DataWorks はリアルタイムメタデータを表示したり、監査ログを生成したり、データリネージを表示したり、EMR 関連のガバナンスタスクを実行したりできません。
-
Trino で Lightweight Directory Access Protocol (LDAP) 認証が有効になっている場合は、EMR マスターノードにログインし、
/etc/taihao-apps/trino-confディレクトリからキーストアファイルをダウンロードします。DataWorks コンソールにログインします。上部のナビゲーションバーで、ターゲットリージョンを選択し、お使いのワークスペースを見つけ、Management 列の Operation をクリックして 管理センター に移動します。左側のナビゲーションウィンドウで、Compute Resource を選択します。お使いの EMR クラスターの [アカウントマッピング] を見つけ、[アカウントマッピングの編集] をクリックします。表示されたページで、Keystoreファイルのアップロード をクリックしてファイルをアップロードします。
操作手順
-
EMR Trino ノードの編集ページで、次の手順を実行します。
コネクタの設定
-
MySQL テーブルをクエリする前に、MySQL 用の組み込み EMR Trino コネクタを設定します。 詳細については、「MySQL コネクタ」をご参照ください。
-
Hive テーブルをクエリする前に、Hive 用の組み込み EMR Trino コネクタを設定します。 詳細については、「Hive コネクタ」をご参照ください。
-
他のデータソースからテーブルをクエリするには、「コネクタの設定」をご参照ください。
SQL コードの編集
SQL エディターでタスクコードを記述します。 ${variable_name} フォーマットを使用して変数を定義できます。 右側にあるScheduling SettingsペインのScheduling Parametersセクションで、変数に値を割り当てることができます。 これにより、スケジュール実行時に動的にパラメーターを渡すことができます。 スケジューリングパラメーターの詳細については、「スケジューリングパラメーターのソースと式」をご参照ください。 以下にコード例を示します。
-- 使用法 -- SELECT * FROM <catalog>.<schema>.<table>; -- パラメーターの説明 -- <catalog>:接続するデータソースの名前。 -- <schema>:使用するデータベースの名前。 -- <table>:クエリするテーブル。 -- 例:Hive データソースのデフォルトデータベースにある hive_table テーブルからデータをクエリします。 -- Hive テーブルのクエリ SELECT * FROM hive.default.hive_table; -- 例:MySQL データソースのカスタム rt_data データベースにある rt_user テーブルからデータをクエリします。 -- MySQL テーブルのクエリ SELECT * FROM mysql.rt_data.rt_user; -- Hive テーブルと MySQL テーブルの結合 SELECT DISTINCT a.id, a.name,b.rt_name FROM hive.default.hive_table a INNER JOIN mysql.rt_data.rt_user b ON a.id = b.id; -- スケジューリングパラメーターを使用した Hive テーブルのクエリ SELECT * FROM hive.default.${table_name};(オプション) 詳細パラメーターの設定
ノード編集ページの右側にあるScheduling Settings ペインので、以下のプロパティを設定できます。
説明右側のScheduling Settings ペインにあるで、オープンソースの Spark プロパティを構成できます。
パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL ステートメントの実行方法を指定します。 有効値:
-
true:一度に複数の SQL ステートメントを実行します。 -
false(デフォルト):一度に 1 つの SQL ステートメントを実行します。
DATAWORKS_SESSION_DISABLE
開発環境でテストを実行する際の JDBC 接続の再利用を制御します。 有効値:
-
true:SQL ステートメントを実行するたびに新しい JDBC 接続を作成します。 -
false(デフォルト):同じノード内で実行される異なる SQL ステートメントに対して、同じ JDBC 接続を再利用します。
SQL タスクの実行
-
Run Configuration ペインの Compute Resource で、Compute Resource と DataWorks Resource Group を選択します。
説明-
タスクに必要なリソースに応じて、CUs for Scheduling を調整することもできます。デフォルト値は
0.25です。 -
パブリックインターネットまたは Virtual Private Cloud (VPC) 経由でデータソースにアクセスするには、データソースの接続性テストに合格したスケジューリングリソースグループを使用する必要があります。 詳細については、「ネットワーク接続ソリューション」をご参照ください。
-
-
ツールバーのパラメーターダイアログボックスで、データソースを選択し、Run をクリックして SQL タスクを実行します。
説明EMR Trino ノードからのクエリ結果は、10,000 行および 10 MB に制限されます。
-
-
ノードタスクを定期的に実行するには、ビジネス要件に基づいてスケジューリングプロパティを設定します。 詳細については、「ノードスケジューリングの設定」をご参照ください。
-
ノードを設定した後、公開する必要があります。 詳細については、「ノードまたはワークフローの公開」をご参照ください。
-
タスクが公開された後、オペレーションセンターでその運用ステータスを表示できます。 詳細については、「オペレーションセンター入門」をご参照ください。
よくある質問
-
Q:ノードを実行すると接続タイムアウトが発生します。 なぜですか。
EMR execute task failed! SQL: {"name":"dw20251018","type":"TRINO_SQL","launcher":{"allocationSpec":{}},"properties":{"envs":{"FLOW_SKIP_SQL_ANALYZE":false},"arguments":["select * from default.dim_customers;"],"tags":[]},"description":"DataWorks"} TASK-MESSAGE: FAILED: Error executing queryA: リソースグループとクラスターがネットワーク経由で相互に接続できることを確認します。コンピューティングリソースリストに移動し、「リソースの初期化」をクリックします。表示されるダイアログボックスで、再度初期化 をクリックします。初期化が成功したことを確認します。
ダイアログボックスの上部には次のメッセージが表示されます:クラスターを初めてバインドする場合、またはクラスターのサービス設定 (たとえば、hive-site ファイル) が変更された場合は、リソースグループを初期化してください。 そうしないと、タスクの実行に失敗する可能性があります。