E-MapReduce (EMR) Serverless Spark は、外部 Hive Metastore サービスに接続して Hive Metastore に保存されているデータにアクセスすることをサポートしています。このトピックでは、EMR Serverless Spark でこの接続を構成して、動作環境のデータリソースを効率的に管理および使用する方法について説明します。
前提条件
ワークスペースと SQL セッションが作成されていること。 詳細については、「ワークスペースの作成」および「SQL セッションの管理」をご参照ください。
制限事項
Hive Metastore を使用するには、ワークスペース内の既存のセッションを再起動する必要があります。
Hive Metastore をデフォルトのデータカタログとして設定すると、フロータスクはデフォルトでそれを使用します。
手順
ステップ 1: Hive Metastore サービスの準備
このトピックでは、外部サービスの例として EMR on ECS の Hive Metastore を使用します。仮想プライベートクラウド (VPC) に Hive Metastore サービスがすでに存在する場合は、このステップをスキップできます。
EMR on ECS ページで、Hive サービスを含み、[メタデータ] が [内蔵 MySQL] に設定されている DataLake クラスターを作成できます。 詳細については、「クラスターの作成」をご参照ください。
Secure Shell (SSH) を使用してクラスターのマスターノードにログインします。 詳細については、「クラスターへのログイン」をご参照ください。
次のコマンドを実行して、Hive コマンドラインに入ります。
hive次のコマンドを実行して、Object Storage Service (OSS) を指す `dw_users` という名前のテーブルを作成し、そのテーブルにデータを書き込みます。
CREATE TABLE `dw_users`( `name` string) LOCATION 'oss://<yourBucket>/path/to/file'; INSERT INTO dw_users select 'Bob';
ステップ 2: ネットワーク接続の追加
ネットワーク接続ページに移動します。
EMR コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[Spark] ページで、対象のワークスペースをクリックします。
[EMR Serverless Spark] ページで、左側のナビゲーションウィンドウにある [ネットワーク接続] をクリックします。
[ネットワーク接続] ページで、[ネットワーク接続の追加] をクリックします。
[ネットワーク接続の追加] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
接続名
新しい接続の名前を入力します。
VPC
EMR クラスターと同じ VPC を選択します。
VSwitch
EMR クラスターと同じ VPC にある vSwitch を選択します。
ネットワーク接続は、[ステータス] が [成功] になると確立されます。

ステップ 3: Hive Metastore サービスポートを開く
ネットワーク接続で指定された vSwitch の CIDR ブロックを取得します。
VPC コンソールまたは にログインし、[VSwitches] ページに移動して vSwitch の CIDR ブロックを見つけます。

セキュリティグループルールを追加します。
EMR on ECS コンソールにログインします。
[EMR On ECS] ページで、対象のクラスター ID をクリックします。
[基本情報] ページで、[クラスターセキュリティグループ] のリンクをクリックします。
[セキュリティグループ] ページで、[ルールの追加] をクリックします。[ソース] と [ポート] を設定し、[OK] をクリックします。
パラメーター
説明
ポート
ポート 9083 を入力します。
ソース
前のステップで取得した vSwitch の CIDR ブロックを入力します。
重要外部からの攻撃によるセキュリティリスクを防止するため、[送信元] に 0.0.0.0/0 を設定しないでください。
ステップ 4: Hive Metastore への接続
[EMR Serverless Spark] ページで、左側のナビゲーションウィンドウにある [データカタログ] をクリックします。
[データカタログ] ページで、[データカタログの追加] をクリックします。
ダイアログボックスで、[外部 Hive Metastore] をクリックします。 次のパラメーターを設定し、[OK] をクリックします。

パラメーター
説明
ネットワーク接続
ステップ 2 で追加したネットワーク接続を選択します。
Metastore エンドポイント
Hive Metastore の URI。フォーマットは
thrift://<Hive metastore の IP アドレス>:9083です。<Hive metastore の IP アドレス>は HMS サービスの内部 IP アドレスです。この例では、EMR クラスターのマスターノードの内部 IP アドレスです。EMR クラスターの [ノード管理] ページで確認できます。説明HMS で高可用性 (HA) が有効になっている場合は、複数のノードのエンドポイントを入力できます。URI をカンマ (,) で区切ります。例: thrift://<Hive metastore 1 の IP アドレス>:9083,thrift://<Hive metastore 2 の IP アドレス>:9083。
Kerberos Keytab ファイルパス
Kerberos keytab ファイルへのパス。
Kerberos プリンシパル
keytab ファイルに含まれるプリンシパルの名前。Kerberos サービスでの ID 検証に使用されます。
klist -kt <keytab file>コマンドを実行して、対象の keytab ファイル内のプリンシpal名を表示できます。
ステップ 5: Hive Metastore の使用
[データカタログ] ページで、hive_metastore を見つけ、[アクション] 列の [デフォルトとして設定] をクリックして、ワークスペースのデフォルトのデータカタログにします。

SQL セッションを再起動します。
ワークスペースに SQL セッションがすでに存在する場合、hive_metastore の設定を有効にするには、セッションを停止してから再起動する必要があります。
SQL Developer を使用して Hive Metastore のテーブルからデータをクエリします。
新しい SQL ジョブを作成します。 詳細については、「SparkSQL ジョブの開発」をご参照ください。
次のコマンドを実行して `dw_users` テーブルをクエリします。
SELECT * FROM dw_users;