Trino は、複数のデータソースにまたがるインタラクティブな分析のためのオープンソースの分散 SQL クエリエンジンです。E-MapReduce (EMR) Trino ノードを作成して、大規模な多次元データ集計やレポート分析を実行できます。詳細については、「Trino」をご参照ください。
前提条件
-
Alibaba Cloud EMR クラスターが作成され、ご利用の DataWorks ワークスペースに登録されていること。
EMR 関連のノードを作成し、EMR タスクを開発するには、EMR クラスターをご利用の DataWorks ワークスペースに登録する必要があります。詳細については、「レガシー DataStudio で EMR コンピューティングリソースをバインド」をご参照ください。
-
(任意、RAM ユーザー向け) タスク開発用の RAM ユーザーがワークスペースに追加され、Development または スペースマネージャー のロールが付与されていること。ワークスペース管理者ロールには広範な権限があるため、慎重に割り当てる必要があります。詳細については、「ワークスペースへのメンバーの追加」をご参照ください。
-
サーバーレスリソースグループが購入され、設定されていること。設定には、リソースグループのワークスペースへのバインドやネットワークの設定が含まれます。詳細については、「サーバーレスリソースグループの使用」をご参照ください。
-
DataStudio でワークフローが作成されていること。
DataStudio では、異なるエンジンに対する開発操作はワークフローに基づいています。したがって、ノードを作成する前にワークフローを作成する必要があります。詳細については、「ワークフローの作成」をご参照ください。
制限事項
-
このタイプのタスクは、サーバーレスリソースグループでのみ実行できます。
-
DataWorks で DataLake またはカスタムクラスターのメタデータを管理するには、クラスターに EMR-HOOK を設定する必要があります。EMR-HOOK が設定されていない場合、DataWorks でメタデータをリアルタイムで表示したり、監査ログを生成したり、データリネージを表示したり、EMR 関連のガバナンスタスクを実行したりすることはできません。EMR-HOOK の設定方法の詳細については、「Hive 用の EMR-HOOK の設定」をご参照ください。
-
Trino で Lightweight Directory Access Protocol (LDAP) 認証が有効になっている場合、EMR クラスターのマスターノードにログインし、
/etc/taihao-apps/trino-confディレクトリからキーストアファイルをダウンロードする必要があります。DataWorks コンソールにログインします。左側のナビゲーションウィンドウで、 をクリックします。ドロップダウンリストから対象のワークスペースを選択し、Go to Management Center をクリックします。左側のナビゲーションウィンドウで、クラスター管理 をクリックします。登録済みの EMR クラスターを見つけます。アカウントマッピング タブで、アカウントマッピングの編集 をクリックし、次に Keystoreファイルのアップロード をクリックしてファイルをアップロードします。
ステップ 1:EMR Trino ノードの作成
DataWorks コンソールにログインします。対象のリージョンで、左側のナビゲーションウィンドウの をクリックします。ドロップダウンリストからワークスペースを選択し、入力 データ開発 をクリックします。
-
対象のワークフローを右クリックし、 を選択します。
-
Create Node ダイアログボックスで、Name を入力し、Compute Engine Instance、Node Type、Path を選択します。確認 をクリックして、EMR Trino ノードのエディターページに移動します。
説明ノード名には、大文字、小文字、漢字、数字、アンダースコア (_)、ピリオド (.) を使用できます。
ステップ 2:EMR Trino タスクの開発
作成したノードをダブルクリックしてタスク開発ページに移動し、以下の操作を実行します。
(任意) EMR クラスターインスタンスの選択
複数の EMR クラスターがワークスペースに登録されている場合は、ノードエディターページの上部にあるドロップダウンリストから適切なクラスターを選択します。EMR クラスターが 1 つしか登録されていない場合、DataWorks はデフォルトでそれを選択します。
IP アドレスホワイトリストが設定されているドメインにアクセスするには、専用のスケジューリングリソースグループを使用する必要があります。
コネクタの設定
-
MySQL テーブルをクエリする前に、組み込みの EMR Trino コネクタを設定する必要があります。詳細については、「MySQL コネクタ」をご参照ください。
-
Hive テーブルをクエリする前に、組み込みの EMR Trino コネクタを設定する必要があります。詳細については、「Hive コネクタ」をご参照ください。
-
他のデータソースのテーブルをクエリするには、「コネクタの設定」で組み込みコネクタの設定方法をご参照ください。
SQL コードの編集
SQL エディターにタスクコードを入力します。以下のコードは一例です。
-- 使用方法
-- SELECT * FROM <catalog>.<schema>.<table>;
-- パラメーターの説明
-- <catalog>:接続するデータソースの名前。
-- <schema>:使用するデータベースの名前。
-- <table>:クエリするテーブル。
-- 例:Hive データソースの default データベースにある 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};
-
DataWorks は、定期的なスケジューリングシナリオでコードに動的に値を渡すために Scheduling Parameter を提供します。ノードタスクのコード内で ${variable_name} 形式で変数を定義し、右側のナビゲーションウィンドウの Scheduling Settings タブで変数に値を割り当てることができます。Scheduling Parameter セクションで、変数に値を割り当てます。スケジューリングパラメーターでサポートされているフォーマットと設定の詳細については、「スケジューリングパラメーターでサポートされているフォーマット」および「スケジューリングパラメーターの設定と使用」をご参照ください。
-
コード内のパラメーターの値を変更する必要がある場合は、ツールバーの Advanced Run をクリックします。パラメーター値の割り当て方法の詳細については、「開発環境での実行、高度な実行、スモークテストにおける値の割り当てロジックの違いは何ですか?」をご参照ください。
SQL タスクの実行
-
ツールバーで、
アイコンをクリックします。Parameter ダイアログボックスで、スケジューリングリソースグループを選択し、Running をクリックします。説明-
パブリックインターネットまたは VPC 経由でコンピューティングリソースにアクセスするには、コンピューティングリソースに接続できるスケジューリングリソースグループを使用する必要があります。詳細については、「ネットワーク接続ソリューション」をご参照ください。
-
後続のタスク実行でリソースグループを変更する必要がある場合は、Running with Parameters
アイコンをクリックし、目的のリソースグループを選択します。 -
EMR Trino ノードでのクエリは最大 10,000 レコードを返し、合計データサイズは 10 MB を超えることはできません。
-
-
アイコンをクリックして SQL コードを保存します。
(任意) 詳細パラメーターの設定
SQL ステートメントの実行方法を調整する必要がある場合は、右側のナビゲーションウィンドウで Advanced Settings をクリックします。
|
パラメーター |
説明 |
|
FLOW_SKIP_SQL_ANALYZE |
SQL ステートメントの実行方法を指定します。有効な値:
|
|
DATAWORKS_SESSION_DISABLE |
このパラメーターは、開発環境でのテスト実行に適用されます。有効な値:
|
ステップ 3:タスクスケジューリングの設定
ノードタスクを定期的に実行するには、ノード編集ページの右側にある Scheduling をクリックし、必要に応じてスケジューリング設定を行います。詳細については、「タスクスケジューリングプロパティの概要」をご参照ください。
ノードを送信する前に、ノードの Rerun attribute と Parent Nodes を設定する必要があります。
ステップ 4:タスクのコミットとデプロイ
ノードタスクを設定した後、コミットしてデプロイする必要があります。タスクがデプロイされると、スケジューリング設定に基づいて定期的に実行されます。
-
ツールバーの
アイコンをクリックしてノードを保存します。 -
ツールバーの
アイコンをクリックしてノードタスクをコミットします。Submission ダイアログボックスで、Change Description を入力し、ノードのコミット後にコードレビューを実行するかどうかを選択します。
説明-
ノードをコミットする前に、Rerun attribute プロパティを設定し、ノードの Parent Nodes を指定する必要があります。
-
コードレビューは、コードの品質を管理し、レビューされていないコードを本番環境にデプロイすることによるエラーを防ぐのに役立ちます。コードレビューを有効にすると、コミットされたコードはレビュー担当者の承認を得てからデプロイできます。詳細については、「コードレビュー」をご参照ください。
-
ワークスペースが標準モードで実行されている場合、タスクをコミットした後にノードエディターページの右上隅にある デプロイ をクリックする必要があります。これにより、タスクが本番環境にデプロイされます。詳細については、「タスクのデプロイ」をご参照ください。
次のステップ
タスクがコミットされデプロイされると、スケジューリング設定に基づいて定期的に実行されます。ノードエディターページの右上隅にある O&M をクリックすると、定期タスクのスケジューリングと運用状況を表示できます。詳細については、「定期タスクの管理」をご参照ください。
よくある質問
-
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 ファイル) が変更された場合は、リソースグループを初期化してください。そうしないと、タスクの実行に失敗する可能性があります。