Presto (PrestoDB) は、標準 SQL を使用したインタラクティブなビッグデータ分析のための、柔軟でスケーラブルな分散 SQL クエリエンジンです。DataWorks は、Presto タスクを開発し、定期的にスケジューリングするための EMR Presto ノードを提供します。
前提条件
-
Alibaba Cloud E-MapReduce クラスターを作成し、DataWorks に登録します。詳細については、「新しい Data Studio:EMR 計算リソースのアタッチ」をご参照ください。
-
(オプション、RAM ユーザー向け) タスク開発用の Resource Access Management (RAM) ユーザーをワークスペースに追加し、開発者 ロールまたは ワークスペース管理者 ロール (このロールには広範な権限が含まれるため、慎重に付与する必要があります) を割り当てる必要があります。詳細については、「ワークスペースへのメンバー追加」をご参照ください。
ルートアカウントを使用している場合は、このステップをスキップしてください。
制限事項
-
Hadoop ベースのデータレイククラスターのみをサポートしています。DataLake クラスターとカスタムクラスターはサポートしていません。
-
このタイプのタスクは、サーバーレスリソースグループ (推奨) またはスケジューリング用の専用リソースグループを使用してのみ実行できます。
-
データリネージ:EMR Presto ノードで実行されるタスクは、データリネージを生成しません。
操作手順
-
EMR Presto ノードエディターページでは、以下の手順で開発します。
SQL コードの開発
SQL エディターでタスク コードを開発します。コード内で ${variable_name} の形式で変数を定義し、スケジューリング設定 タブの スケジューリングパラメーター セクションで値を割り当てることができます。これにより、定期実行のための動的なパラメーター渡しが可能になります。スケジューリングパラメーターの詳細については、「スケジューリングパラメーターのソースと式」をご参照ください。以下のコードは一例です。
select '${var}'; -- スケジューリングパラメーターと併用できます。 select * from userinfo ;説明-
SQL 文は 130 KB を超えることはできません。
-
EMR Presto ノードで実行されるクエリは最大 10,000 行を返すことができますが、合計データサイズは 10 MB を超えることはできません。
(オプション) 詳細パラメーターの設定
右側のペインの スケジューリング設定 タブで、 にある、次の表で説明するパラメーターを設定します。
説明右側の スケジューリング設定 ペインの で、さらに多くの オープンソースのPrestoプロパティ を設定できます。
EMR on ECS
パラメーター
説明
DATAWORKS_SESSION_DISABLE
このパラメーターは、開発環境でのテスト実行にのみ適用されます。有効な値:
-
true:SQL 文が実行されるたびに、新しい JDBC 接続が作成されます。 -
false(デフォルト):同じノードで異なる SQL 文を実行する場合、同じ JDBC 接続が再利用されます。
説明このパラメーターを
falseに設定すると、Presto のyarn applicationIdは出力されません。yarn applicationIdを出力するには、このパラメーターをtrueに設定します。FLOW_SKIP_SQL_ANALYZE
SQL 文の実行方法を制御します。有効な値:
-
true:複数の SQL 文が一度に実行されます。 -
false(デフォルト):一度に 1 つの SQL 文が実行されます。
説明このパラメーターは、開発環境でのテスト実行にのみ適用されます。
priority
タスクの優先度です。デフォルト値:1。
queue
タスクを送信する YARN キューです。デフォルトは
defaultキューです。EMR YARN の詳細については、「基本的なキュー設定」をご参照ください。SQL タスクの実行
-
デバッグの構成 セクションの 計算リソース タブで、計算リソース と DataWorks リソースグループ を選択します。
説明-
タスクのリソース要件に基づいて、スケジューリング CU の値を調整することもできます。デフォルトは
0.25です。 -
パブリックネットワークまたは仮想プライベートクラウド (VPC) 経由でデータソースにアクセスするには、データソースのネットワーク接続テストに合格したスケジューリングリソースグループを使用する必要があります。詳細については、「ネットワーク接続ソリューション」をご参照ください。
-
-
ツールバーのパラメーターダイアログボックスで、ターゲットデータソースを選択し、 実行 をクリックします。
-
-
ノードタスクを定期的に実行する必要がある場合は、ビジネス要件に基づいてスケジューリングプロパティを設定します。詳細については、「ノードのスケジューリングを設定する」をご参照ください。
-
ノードタスクを設定した後、ノードを公開する必要があります。詳細については、「ノードとワークフローを公開する」をご参照ください。
-
タスクを公開した後、オペレーションセンターで定期実行のステータスを確認できます。詳細については、「オペレーションセンター入門」をご参照ください。
よくある質問
-
Q: "Error executing query" というメッセージが表示されるのはなぜですか。
EMR execute task failed! SQL: {"name":"dw20251018","type":"PRESTO_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: クラスターが Hadoop ベースのデータレイククラスター であることを確認してください。
-
Q: ノードの実行時に接続タイムアウトが発生するのはなぜですか。
A:リソースグループとクラスターがネットワーク経由で相互に接続できることを確認してください。計算リソースリストに移動し、[リソースの初期化] をクリックします。表示されるダイアログボックスで、再初期化 をクリックします。初期化が成功したことを確認してください。