EMR Presto ノードでは、Alibaba Cloud E-MapReduce (EMR) クラスターに対して Presto SQL クエリを作成し、DataWorks で定期的に実行できます。
制限事項
| 制約 | 詳細 |
|---|---|
| クラスタータイプ | レガシー Hadoop データレイククラスターのみ。 DataLake および Custom クラスターはサポートされていません。 |
| リソースグループ | サーバーレスリソースグループまたはスケジューリング専用リソースグループ。 可能な場合は、サーバーレスリソースグループを使用してください。 |
| SQL ステートメントのサイズ | 各 SQL ステートメントは 130 KB を超えることはできません。 |
| クエリ結果 | 1 回のクエリで、最大 10,000 レコード、10 MB のデータを返します。 |
| データリネージ | EMR Presto ノードではサポートされていません。 |
前提条件
開始する前に、次のことを確認してください:
-
EMR クラスターが作成され、DataWorks に登録されていること。 詳細については、「DataStudio (旧バージョン):EMR コンピューティングリソースの関連付け」をご参照ください。
-
(RAM ユーザーを使用する場合) RAM ユーザーが、[開発者] または [ワークスペース管理者] のロールでワークスペースに追加されていること。 [ワークスペース管理者] ロールは、このタスクで必要とされる以上の権限を付与するため、注意して割り当ててください。 詳細については、「ワークスペースのメンバーを追加し、ロールを割り当てる」をご参照ください。
-
サーバーレスリソースグループを購入し、ワークスペースの関連付けとネットワーク設定が完了していること。 詳細については、「サーバーレスリソースグループの作成と使用」をご参照ください。
-
DataStudio でワークフローが作成されていること。 詳細については、「ワークフローの作成」をご参照ください。
ステップ 1:EMR Presto ノードの作成
-
DataStudio ページに移動します。 DataWorks コンソールにログインします。 上部メニューで、リージョンを選択します。 左側メニューで、[データ開発と O&M] > [データ開発] を選択します。 ドロップダウンリストからワークスペースを選択し、[データ開発へ] をクリックします。
-
ワークフローディレクトリで、対象のワークフローを右クリックし、[ノードの作成] > [EMR] > [EMR Presto] を選択します。
または、[作成] にカーソルを合わせ、[ノードの作成] > [EMR] > [EMR Presto] を選択します。
-
[ノードの作成] ダイアログボックスで、以下のフィールドを設定し、[確認] をクリックします。 EMR Presto ノードの設定タブが開きます。
フィールド 説明 [名前] ノードの名前。 使用できる文字:大文字、小文字、漢字、数字、アンダースコア ( _)、ピリオド (.)。[エンジンインスタンス] このノードに関連付ける EMR コンピューティングリソース。 [ノードタイプ] 使用するコンピュートノードのタイプ。 [パス] ワークフローディレクトリ構造内の場所。
ステップ 2:EMR Presto タスクの開発
作成したノードをダブルクリックします。 タスク開発ページが開き、SQL の作成、高度なパラメーターの設定、タスクの実行ができます。
SQL コードの開発
SQL エディターで Presto SQL を記述します。 コード内で変数を定義するには、${variable_name} 構文を使用します。 右側のパネルの [スケジューリング設定] > [スケジューリングパラメーター] で、key=value 形式でこれらの変数に値を割り当てます。 これにより、コードを変更することなく、スケジューリング時に動的な値を渡すことができます。
例:
select '${var}'; -- ${var} は、スケジューリングパラメーターから実行時に解決されます
select * from userinfo;
var に値を割り当てるには、[スケジューリング設定] > [スケジューリングパラメーター] を開き、var=2024-01-01 のようなエントリを追加します。 サポートされているパラメーター形式については、「スケジューリングパラメーターでサポートされている形式」をご参照ください。
ワークスペースに複数の EMR コンピューティングリソースがアタッチされている場合は、このノードで使用するリソースを選択します。 1 つしかアタッチされていない場合は、選択は不要です。
スケジューリング前にパラメーターの解決をテストするには、上部のツールバーで [パラメーターを指定して実行] をクリックします。 通常実行、パラメーターを指定して実行、スモークテストでのパラメーター値の違いの詳細については、「パラメーター割り当てロジックの違い」をご参照ください。
高度なパラメーターの設定 (任意)
Hadoop クラスター:EMR on ECS
[高度な設定] セクションで、以下のパラメーターを設定して、SQL 実行の動作とジョブ送信のルーティングを制御します。 パラメーターの設定方法の詳細については、「Spark の設定」をご参照ください。 これらのパラメーターは Hadoop クラスター (EMR on ECS) に適用されます。
| パラメーター | 値 | デフォルト | 説明 |
|---|---|---|---|
FLOW_SKIP_SQL_ANALYZE |
true / false |
false |
SQL ステートメントの実行方法を制御します。 true:すべてのステートメントを 1 つのバッチで実行します。 false:ステートメントを一度に 1 つずつ実行します。 開発環境でのテスト実行にのみ適用されます。 |
USE_GATEWAY |
true / false |
false |
ジョブ送信のルーティングを制御します。 true:ゲートウェイクラスター経由でジョブを送信します。 false:ヘッダーノードに直接ジョブを送信します。 ゲートウェイクラスターが関連付けられていない場合にこれを true に設定すると、ジョブ送信は失敗します。 |
SQL タスクの実行
-
ツールバーで
アイコンをクリックします。 [パラメーター] ダイアログボックスで、スケジューリングリソースグループを選択し、[実行] をクリックします。リソースグループは、EMR クラスターとの接続テストに合格している必要があります。 パブリックインターネット経由または VPC 内でコンピューティングリソースにアクセスするには、まず接続性を確認してください。 詳細については、「ネットワーク接続ソリューション」をご参照ください。
-
アイコンをクリックして SQL を保存します。 -
(任意) スモークテストを実行します。 開発環境でのスモークテストは、ノードの送信時または送信後にトリガーできます。 詳細については、「スモークテストの実行」をご参照ください。
ステップ 3:スケジューリングプロパティの設定
タスクを定期的に実行するには、右側のナビゲーションペインで [プロパティ] をクリックし、スケジューリング設定を行います。
タスクをコミットする前に、[再実行] および [親ノード] パラメーターを設定してください。
スケジューリングオプションの完全なリファレンスについては、「概要」をご参照ください。
ステップ 4:タスクのデプロイ
-
アイコンをクリックしてタスクを保存します。 -
アイコンをクリックしてタスクをコミットします。 [送信] ダイアログボックスで、[変更の説明] を入力します。 ワークスペースでコードレビューが有効な場合、コミットしたコードがレビューに合格した後にのみタスクをデプロイできます。 詳細については、「コードレビュー」をご参照ください。コミットする前に、[プロパティ] タブで [再実行] および [親ノード] パラメーターを設定してください。
-
(標準モードのワークスペースのみ) タスクを本番環境にデプロイします。 ノード設定タブの右上隅にある [デプロイ] をクリックします。 詳細については、「ノードのデプロイ」をご参照ください。
次のステップ
タスクがコミットおよびデプロイされると、スケジューリング設定に基づいて自動的に実行されます。 スケジューリングのステータスを監視するには、ノード設定タブの右上隅にある [オペレーションセンター] をクリックします。 詳細については、「自動トリガータスクの表示と管理」をご参照ください。
よくある質問
"Error executing query" が表示されるのはなぜですか?
このエラーは、クラスタータイプがサポートされていない場合に発生します。 EMR Presto ノードは、レガシー Hadoop データレイククラスターでのみ動作します。DataLake および Custom クラスターはサポートされていません。
これを解決するには:
-
DataStudio で、コンピューティングリソースリストに移動します。
-
ワークスペースに登録されているクラスターが、レガシー Hadoop データレイククラスターであることを確認します。
ノード実行時に接続タイムアウトが発生するのはなぜですか?
これは、リソースグループと EMR クラスター間のネットワーク接続に問題があることが原因と考えられます。
これを解決するには:
-
DataStudio で、コンピューティングリソースリストページに移動します。
-
リソースを見つけて [再初期化] をクリックします。


-
初期化が正常に完了したことを確認してから、タスクを再試行します。
問題が解決しない場合は、リソースグループが EMR クラスターとの接続テストに合格していることを確認してください。 詳細については、「ネットワーク接続ソリューション」をご参照ください。