Presto (PrestoDB とも呼ばれる) は、標準 SQL を使用してビッグデータのインタラクティブな分析とクエリをサポートする、柔軟でスケーラブルな分散 SQL クエリエンジンです。DataWorks は EMR Presto ノードを提供しており、これを使用して Presto タスクを開発し、定期的にスケジュールできます。このトピックでは、EMR Presto ノードを使用してタスクを開発する方法と、重要な考慮事項について説明します。
前提条件
Alibaba Cloud EMR クラスターを作成し、DataWorks にバインドしていること。詳細については、「DataStudio (新バージョン): EMR コンピューティングリソースをバインドする」をご参照ください。
(任意) Resource Access Management (RAM) ユーザーの場合は、タスク開発用のワークスペースに追加され、[開発者] または [ワークスペース管理者] ロールが割り当てられていることを確認してください。ワークスペース管理者ロールには広範な権限があります。このロールは慎重に付与してください。メンバーの追加に関する詳細については、「ワークスペースにメンバーを追加する」をご参照ください。
Alibaba Cloud アカウントを使用している場合は、このステップをスキップできます。
制限事項
Hadoop ベースのデータレイククラスターの旧バージョンのみがサポートされています。DataLake クラスターとカスタムクラスターはサポートされていません。
このタイプのタスクは、サーバーレスリソースグループ (推奨) またはスケジューリング用の専用リソースグループでのみ実行できます。
データリネージ: EMR Presto ノードで実行されるタスクでは、データリネージはサポートされていません。
手順
EMR Presto ノードの編集ページで、次のようにノードを開発します。
SQL コードの開発
SQL エディターでタスクコードを開発できます。コードでは、${variable_name} フォーマットを使用して変数を定義できます。次に、右側の [スケジューリング設定] タブの [スケジューリングパラメーター] セクションで、これらの変数に値を割り当てることができます。これにより、スケジュールされたタスクにパラメーターを動的に渡すことができます。スケジューリングパラメーターの詳細については、「サポートされているスケジューリングパラメーターのフォーマット」をご参照ください。次のコードは一例です。
select '${var}'; -- スケジューリングパラメーターとともに使用します。 select * from userinfo ;説明SQL 文のサイズは 130 KB を超えることはできません。
EMR Presto ノードを使用してデータをクエリする場合、クエリは最大 10,000 件のデータエントリを返すことができます。返されるデータの合計サイズは 10 MB を超えることはできません。
(任意) 詳細パラメーターの設定
ノードの右側にある [スケジューリング設定] タブの セクションで、次の固有のパラメーターを設定できます。
説明[スケジューリング設定] タブの セクションで、追加のオープンソース Spark プロパティパラメーターを設定できます。詳細については、「オープンソース Spark プロパティパラメーター」をご参照ください。
Hadoop クラスター: EMR on ECS
詳細パラメーター
説明
DATAWORKS_SESSION_DISABLE
このパラメーターは、開発環境で直接テストを実行するシナリオに適用されます。有効な値:
true: SQL 文が実行されるたびに、新しい Java Database Connectivity (JDBC) 接続が作成されます。false(デフォルト): ユーザーがノード内で異なる SQL 文を実行するときに、同じ JDBC 接続が再利用されます。
説明このパラメーターを
falseに設定すると、Hive のyarn applicationIdは出力されません。yarn applicationIdを出力するには、このパラメーターをtrueに設定します。FLOW_SKIP_SQL_ANALYZE
SQL 文を実行するために使用されるメソッド。有効な値:
true: 毎回複数の SQL 文が実行されます。false(デフォルト): 毎回 1 つの SQL 文が実行されます。
説明このパラメーターは、開発環境でのテスト実行にのみ使用できます。
priority
優先度。デフォルト値は 1 です。
queue
ジョブがサブミットされるスケジューリングキュー。デフォルトのキューは
defaultです。EMR YARN の詳細については、「基本的なキュー設定」をご参照ください。SQL タスクの実行
[デバッグ設定] の [コンピューティングリソース] セクションで、[コンピューティングリソース] と [DataWorks リソースグループ] を設定します。
説明タスクの実行に必要なリソースに基づいて [スケジューリング CU] を設定することもできます。デフォルト値は
0.25です。パブリックネットワークまたは VPC 内のデータソースにアクセスするには、データソースとの接続性テストに合格したスケジューリングリソースグループを使用する必要があります。詳細については、「ネットワーク接続ソリューション」をご参照ください。
ツールバーのパラメーターダイアログボックスで、データソースを選択し、[実行] をクリックして SQL タスクを実行します。
ノードタスクをスケジュールどおりに実行するには、必要に応じてスケジューリングプロパティを設定します。詳細については、「ノードのスケジューリングを設定する」をご参照ください。
ノードタスクを設定したら、ノードを公開します。詳細については、「ノードとワークフローを公開する」をご参照ください。
タスクが公開された後、オペレーションセンターで定期タスクの実行ステータスを表示できます。詳細については、「オペレーションセンター入門」をご参照ください。
よくある質問
Q: 「Error executing query」というメッセージが表示されるのはなぜですか?

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

