Presto (PrestoDB とも呼ばれます) は、柔軟でスケーラブルな分散 SQL クエリエンジンであり、標準 SQL をサポートし、ビッグデータのインタラクティブな分析とクエリを実行します。DataWorks は EMR Presto ノードを提供しており、これを使用して Presto タスクを開発し、定期的にスケジュールできます。このトピックでは、EMR Presto ノードを使用したタスク開発のプロセスと重要な注意事項について説明します。
前提条件
Alibaba Cloud EMR クラスターが作成され、DataWorks に登録されていること。詳細については、「DataStudio (旧バージョン): EMR コンピューティングリソースの関連付け」をご参照ください。
(RAM ユーザーを使用してタスクを開発する場合に必要) RAM ユーザーがメンバーとして DataWorks ワークスペースに追加され、[開発] または [ワークスペース管理者] ロールが割り当てられていること。ワークスペース管理者ロールには必要以上の権限があります。ワークスペース管理者ロールを割り当てる際は注意してください。メンバーの追加方法の詳細については、「ワークスペースへのメンバーの追加」をご参照ください。
サーバーレスリソースグループが購入され、設定されていること。設定には、ワークスペースとの関連付けやネットワーク設定が含まれます。詳細については、「サーバーレスリソースグループの作成と使用」をご参照ください。
DataStudio でワークフローが作成されていること。
さまざまなタイプのコンピュートエンジンでの開発操作は、DataStudio のワークフローに基づいて実行されます。したがって、ノードを作成する前に、ワークフローを作成する必要があります。詳細については、「ワークフローの作成」をご参照ください。
制限事項
サポートされているのは従来の Hadoop データレイククラスターのみです。DataLake クラスターとカスタムクラスターはサポートされていません。
このタイプのノードは、サーバーレスリソースグループまたは専用スケジューリングリソースグループでのみ実行できます。サーバーレスリソースグループの使用を推奨します。
Presto タスクの SQL 文のサイズは 130 KB を超えることはできません。
EMR Presto ノードを使用してデータをクエリする場合、最大 10,000 レコードを返すことができ、返されるデータの合計サイズは 10 MB を超えることはできません。
EMR Presto ノードを使用して開発されたタスクでは、データリネージはサポートされていません。
ステップ 1: EMR Presto ノードの作成
DataStudio ページに移動します。
DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発へ] をクリックします。
EMR Presto ノードを作成します。
ターゲットワークフローを右クリックし、 を選択します。
説明または、[作成] にカーソルを合わせ、 を選択することもできます。
[ノードの作成] ダイアログボックスで、[名前] を入力し、[エンジンインスタンス]、[ノードタイプ]、[パス] を選択します。[確認] をクリックします。EMR Presto ノードの設定タブが表示されます。
説明ノード名には、大文字、小文字、漢字、数字、アンダースコア (_)、ピリオド (.) を使用できます。
ステップ 2: EMR Presto タスクの開発
EMR Presto ノードの設定タブで、作成したノードをダブルクリックします。タスク開発ページにリダイレクトされ、そこで次の操作を実行できます。
SQL コードの開発
SQL エディターでノードコードを開発し、${variable_name} 形式を使用して変数を定義できます。その後、右側のナビゲーションバーの [スケジューリング設定] > [スケジューリングパラメーター] セクションのノード編集ページで各変数に値を割り当てることができます。これにより、スケジューリングシナリオでコードにパラメーターを動的に渡すことができます。スケジューリングパラメーターの詳細については、「サポートされているスケジューリングパラメーターの形式」をご参照ください。以下に例を示します。
select '${var}'; -- スケジューリングパラメーターとともに使用できます。
select * from userinfo ;SQL 文のサイズは 130 KB を超えることはできません。
DataStudio のワークスペースに複数の EMR コンピューティングリソースがアタッチされている場合は、必要に応じてコンピューティングリソースを選択します。EMR コンピューティングリソースが 1 つしかアタッチされていない場合は、選択する必要はありません。
コード内のパラメーター割り当てを変更するには、上部のツールバーで [パラメーターを指定して実行] をクリックします。パラメーター割り当てロジックの詳細については、「実行、パラメーターを指定して実行、および開発環境のスモークテストにおけるパラメーター割り当てロジックの違い」をご参照ください。
(オプション) 詳細パラメーターの設定
[詳細設定] セクションでノードの特定のプロパティを設定できます。パラメーターの設定方法の詳細については、「Spark の設定」をご参照ください。次の表に、さまざまなタイプの EMR クラスターで設定できる詳細パラメーターを示します。
Hadoop クラスター: EMR on ECS
詳細パラメーター | 説明 |
FLOW_SKIP_SQL_ANALYZE | SQL 文の実行メソッド。有効な値:
説明 このパラメーターは、開発環境でのフローのテスト実行でのみサポートされます。 |
USE_GATEWAY | このノードからゲートウェイクラスター経由でジョブを送信するかどうかを指定します。有効な値:
説明 ノードのクラスターがゲートウェイクラスターに関連付けられていない場合、このパラメーターを |
SQL タスクの実行
ツールバーで、
アイコンをクリックします。[パラメーター] ダイアログボックスで、作成したスケジューリングリソースグループを選択し、[実行] をクリックします。説明パブリックインターネットまたは VPC 経由でコンピューティングリソースにアクセスするには、それらのリソースとの接続性テストに合格したスケジューリングリソースグループを使用する必要があります。詳細については、「ネットワーク接続ソリューション」をご参照ください。
後続のジョブのリソースグループを変更するには、[パラメーターを指定して実行]
アイコンをクリックして、別のスケジューリングリソースグループを選択できます。
アイコンをクリックして SQL 文を保存します。(オプション) スモークテストの実行。
開発環境でスモークテストを実行する場合は、ノードを送信するとき、またはノードを送信した後に実行できます。詳細については、「スモークテストの実行」をご参照ください。
ステップ 3: スケジューリングプロパティの設定
ノードでタスクを定期的に実行させたい場合は、ノードの設定タブの右側のナビゲーションウィンドウで [プロパティ] をクリックして、ビジネス要件に基づいてタスクのスケジューリングプロパティを設定できます。詳細については、「概要」をご参照ください。
タスクをコミットする前に、[プロパティ] タブで [再実行] および [親ノード] パラメーターを設定する必要があります。
ステップ 4: タスクのデプロイ
ノード上のタスクが設定されたら、タスクをコミットしてデプロイする必要があります。タスクをコミットしてデプロイすると、システムはスケジューリング設定に基づいてタスクを定期的に実行します。
上部のツールバーにある
アイコンをクリックして、タスクを保存します。上部のツールバーにある
アイコンをクリックして、タスクをコミットします。[送信] ダイアログボックスで、[変更の説明] パラメーターを設定します。次に、ビジネス要件に基づいて、タスクをコミットした後にタスクコードをレビューするかどうかを決定します。
説明タスクをコミットする前に、[プロパティ] タブで [再実行] および [親ノード] パラメーターを設定する必要があります。
コードレビュー機能を使用して、タスクのコード品質を確保し、無効なタスクコードによるタスク実行エラーを防ぐことができます。コードレビュー機能を有効にすると、コミットされたタスクコードは、コードレビューに合格した後にのみデプロイできます。詳細については、「コードレビュー」をご参照ください。
標準モードのワークスペースを使用している場合、タスクをコミットした後に本番環境にタスクをデプロイする必要があります。ノードにタスクをデプロイするには、ノードの設定タブの右上隅にある [デプロイ] をクリックします。詳細については、「ノードのデプロイ」をご参照ください。
その他の操作
タスクをコミットしてデプロイすると、タスクはスケジューリング設定に基づいて定期的に実行されます。対応するノードの設定タブの右上隅にある [オペレーションセンター] をクリックしてオペレーションセンターに移動し、タスクのスケジューリングステータスを表示できます。詳細については、「定期タスクの表示と管理」をご参照ください。
よくある質問
Q: 「クエリの実行エラー」というメッセージが表示されるのはなぜですか?

A: クラスターが Hadoop ベースのデータレイククラスターの以前のバージョンであることを確認してください。
Q: ノードの実行時に接続タイムアウトが発生するのはなぜですか?
A: リソースグループとクラスター間のネットワーク接続性を確認してください。コンピューティングリソースリストページに移動して、リソースを初期化します。表示されるダイアログボックスで、[再初期化] をクリックし、初期化が成功したことを確認します。

