Impala は、ペタバイト規模のデータに対して高速、リアルタイム、対話型のクエリを実行する SQL クエリエンジンです。このドキュメントでは、データ開発のために DataWorks で EMR Impala ノードを作成および設定する方法を説明します。
前提条件
-
Alibaba Cloud E-MapReduce (EMR) クラスターを作成し、DataWorks に登録済みであること。詳細については、「Data Studio: EMR コンピューティングリソースの関連付け」をご参照ください。
(オプション、RAM ユーザーに必要) タスク開発を担当する Resource Access Management (RAM) ユーザーをワークスペースに追加し、[Developer] または [Workspace Administrator] ロールを割り当てます。Workspace Administrator ロールは広範な権限を持つため、慎重に付与してください。メンバーの追加の詳細については、「ワークスペースにメンバーを追加」をご参照ください。
Alibaba Cloud アカウントを使用している場合は、このステップをスキップできます。
-
DataWorks で Hive データソースを構成し、接続テストに合格済みであること。詳細については、「データソース管理」をご参照ください。
制限事項
-
EMR Impala ノードは、サーバーレスリソースグループ (推奨) または専用スケジューリングリソースグループでのみ実行できます。
-
EMR Impala ノードは、レガシーデータレイククラスター (Hadoop) のコンピューティングリソースでのみ実行できます。DataWorks は、新しい Hadoop クラスターのバインドをサポートしなくなりました。ただし、既存のバインドされた Hadoop クラスターは引き続き使用できます。
操作手順
-
EMR Impala ノードのエディターページで、次の手順を実行します。
SQL コードの開発
SQL エディターで、タスクのコードを記述します。 ${variable_name} 形式を使用して、コードで変数を定義できます。 次に、Scheduling Settings タブの Scheduling Parameters セクションで変数に値を割り当てます。 これにより、スケジュールされたタスクにパラメーターを動的に渡すことができます。 スケジューリングパラメーターの詳細については、「スケジューリングパラメーターのソースと式」をご参照ください。 以下のコードは例です。
SHOW TABLES ; CREATE TABLE IF NOT EXISTS userinfo ( ip STRING COMMENT'IP address', uid STRING COMMENT'User ID' )PARTITIONED BY( dt STRING ); ALTER TABLE userinfo ADD IF NOT EXISTS PARTITION(dt='${bizdate}'); -- スケジューリングパラメーターと併用可能です。 SELECT * FROM userinfo ;説明SQL 文のサイズは 130 KB を超えることはできません。
(オプション) 高度なパラメーターの設定
ページの右側で、Scheduling Settings タブに移動します。 セクションで、次の表で説明されている特定のパラメーターを設定します。
説明-
利用可能な高度なパラメーターは、EMR クラスターのタイプによって異なります。
-
追加の オープンソース Spark プロパティ は、 セクション (Scheduling Settings タブ) で設定します。
Datalake およびカスタムクラスター
パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行方法を指定します。有効な値:
-
true:複数の SQL 文が一度に実行されます。 -
false(デフォルト):一度に 1 つの SQL 文が実行されます。
説明このパラメーターは、開発環境でのテスト実行でのみ有効です。
DATAWORKS_SESSION_DISABLE
開発環境でのテスト実行でセッションを再利用するかどうかを指定します。有効な値:
-
true:SQL 文を実行するたびに新しい JDBC 接続が作成されます。 -
false(デフォルト):単一ノード内で異なる SQL 文を実行する場合、同じ JDBC 接続が再利用されます。
説明このパラメーターを
falseに設定すると、Hive のyarn applicationIdがログに出力されません。yarn applicationIdを出力するには、このパラメーターをtrueに設定します。priority
ジョブの優先度。デフォルト値は 1 です。
queue
ジョブが送信されるスケジューリングキュー。デフォルトのキューは
defaultです。EMR YARN の詳細については、「基本的なキュー設定」をご参照ください。Hadoop クラスター
パラメーター
説明
FLOW_SKIP_SQL_ANALYZE
SQL 文の実行方法を指定します。有効な値:
-
true:複数の SQL 文が一度に実行されます。 -
false(デフォルト):一度に 1 つの SQL 文が実行されます。
説明このパラメーターは、開発環境でのテスト実行でのみ有効です。
USE_GATEWAY
ジョブをゲートウェイクラスター経由で送信するかどうかを指定します。有効な値:
-
true:ジョブはゲートウェイクラスター経由で送信されます。 -
false(デフォルト):ジョブはゲートウェイクラスター経由で送信されません。デフォルトでは、ジョブはヘッダーノードに送信されます。
説明このパラメーターを
trueに設定しても、ノードが使用するクラスターがゲートウェイクラスターに関連付けられていない場合、後続のジョブ送信は失敗します。SQL タスクの実行
-
Run Configuration ペインの Compute Resource で、Compute Resource と Resource Group を選択します。
説明-
タスクに必要なリソースに基づいて、CUs for Scheduling を設定することもできます。デフォルト値は
0.25です。 -
パブリックインターネットまたは VPC 経由でデータソースにアクセスするには、データソースとのネットワーク接続テストに合格したスケジューリングリソースグループを使用する必要があります。詳細については、「ネットワーク接続ソリューション」をご参照ください。
-
-
ツールバーのパラメーターダイアログボックスで、Hive データソースを選択し、Run をクリックします。
説明EMR Impala ノードを使用してデータをクエリする場合、クエリが返す行数は最大 10,000 行で、合計データサイズは 10 MB を超えることはできません。
-
Saveをクリックします。
-
-
ノードタスクを定期的に実行するには、ビジネス要件に基づいてスケジューリングプロパティを設定します。詳細については、「ノードのスケジューリング設定」をご参照ください。
-
ノードを設定した後、デプロイします。詳細については、「ノードまたはワークフローのデプロイ」をご参照ください。
-
タスクがデプロイされた後、運用センターでスケジュールされたタスクのステータスを表示できます。詳細については、「運用センターの概要」をご参照ください。
(オプション) データリネージの表示
データマップに EMR Impala タスクのテーブルレベルおよび列レベルのデータリネージを表示するには、まず EMR クラスターで Impala のリネージログを有効にする必要があります。この機能は EMR DataLake クラスターでのみサポートされており、Hive メタストア (HMS) と Data Lake Formation (DLF) の両方のメタデータと互換性があります。設定の詳細については、「データリネージ分析」をご参照ください。
この機能は現在ベータ版です。ご利用いただくには、チケットを送信するか、Alibaba Cloud テクニカルサポートにお問い合わせください。
よくある質問
-
Q:「Impala JDBC Url is Empty」エラーを解決するにはどうすればよいですか?
>>> [ERROR][LauncherFactory]: JobLauncher init Failed! java.lang.RuntimeException: Impala JDBC Url is Empty! at com.aliyun.emr.dataworks.dcc.launcher.type.ImpalaJobLauncher.initJdbcConnectionA:クラスターに Impala サービスが追加されていることを確認してください。Impala サービスは既存のユーザーのみが利用できます。
-
Q:ノード実行時に接続タイムアウトエラーが発生するのはなぜですか?
EMR execute task failed! FAILED: Build connection error! Could not open client transport with JDBC Uri: jdbc:hive2://<host>:21050/;auth=noSasl: java.net.ConnectException: Connection timed out (Connection timed out)A: リソースグループとクラスター間のネットワーク接続を確認します。コンピューティングリソースページに移動し、リソースを見つけて [リソースの初期化] をクリックします。表示されるダイアログボックスで、[再初期化] をクリックし、初期化が成功したことを確認します。