■ はじめに
https://dk521123.hatenablog.com/entry/2023/07/16/000000
の続き。 今回は、Amazon EMRのFlinkにおいて、 AWS Glue Data Catalog を使用する際の技術事項をメモっておく
目次
【0】注意点 1)AWS EMR の Flink 部分の公式ドキュメントの日本語訳 2)公式のシェルスクリプトだとエラーになる 【1】ロールの付与 【2】AWS Glue Data Catalog を使うための手順 Step0:シェルスクリプトを用意する Step1:EMRクラスタを作成 Step2:Stepの追加
【0】注意点
1)AWS EMR の Flink 部分の公式ドキュメントの日本語訳
(少なくとも) AWS EMR の Flink 部分の公式ドキュメントの日本語訳は 機械翻訳がダメ過ぎて、めちゃくちゃ分かりづらいので、 英語をそのまま読んだ方がいいかも。
2)公式のシェルスクリプトだとエラーになる
https://docs.aws.amazon.com/emr/latest/ReleaseGuide/flink-configure.html
のシェルスクリプトをそのままだと、エラーになる。 =>「【2】AWS Glue Data Catalog を使うための手順」の 「Step0:シェルスクリプトを用意する」 に今回使用した例がある
エラーの原因
* flink-connector-hive_2.12-1.15.2.jar のバージョンが異なる ついでに、エラーの原因じゃないかもしれないが。。。 * 空白行が入っている
【1】ロールの付与
以下の公式ドキュメントの「Using the AWS Glue Data Catalog」を参考に Service role に追加する
https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:UpdateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:CreateTable", "glue:UpdateTable", "glue:DeleteTable", "glue:GetTable", "glue:GetTables", "glue:GetTableVersions", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:UpdatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:CreateUserDefinedFunction", "glue:UpdateUserDefinedFunction", "glue:DeleteUserDefinedFunction", "glue:GetUserDefinedFunction", "glue:GetUserDefinedFunctions" ], "Resource": "*", } ] }
【2】AWS Glue Data Catalog を使うための手順
Step0:シェルスクリプトを用意する
https://docs.aws.amazon.com/emr/latest/ReleaseGuide/flink-configure.html
を参考に、 AWS Glue Data Catalog を使用する際に必要なライブラリの設定するための シェルスクリプトを作成し、S3バケットに置く (今回の場合、「s3://your-s3-bucket/emr-filnk/glue-catalog-setup.sh」)
glue-catalog-setup.sh
sudo cp /usr/lib/hive/auxlib/aws-glue-datacatalog-hive3-client.jar /usr/lib/flink/lib sudo cp /usr/lib/hive/lib/antlr-runtime-3.5.2.jar /usr/lib/flink/lib sudo cp /usr/lib/hive/lib/hive-exec-3.1.3*.jar /lib/flink/lib sudo cp /usr/lib/hive/lib/libfb303-0.9.3.jar /lib/flink/lib # Modify #sudo cp /usr/lib/flink/opt/flink-connector-hive_2.12-1.15.2.jar /lib/flink/lib sudo cp /usr/lib/flink/opt/flink-connector-hive_2.12-1.*.*.jar /lib/flink/lib sudo chmod 755 /usr/lib/flink/lib/aws-glue-datacatalog-hive3-client.jar sudo chmod 755 /usr/lib/flink/lib/antlr-runtime-3.5.2.jar sudo chmod 755 /usr/lib/flink/lib/hive-exec-3.1.3*.jar sudo chmod 755 /usr/lib/flink/lib/libfb303-0.9.3.jar # Modify #sudo chmod 755 /usr/lib/flink/lib/flink-connector-hive_2.12-1.15.2.jar sudo chmod 755 /usr/lib/flink/lib/flink-connector-hive_2.12-1.*.*.jar
Step1:EMRクラスタを作成
* EMR version: v6.9.0 or higher(今回の場合は、「emr-6.12.0」) * Hive / Flink は必須(今回の場合は、「Flink」を選択すると「Flink/Hadoop/Hive/Zeppelin」が入る) * 「Use for Hive table metadata」にチェックを付ける
Step2:Stepの追加
[1] 「Steps - Optional」欄の「Add」ボタン押下 [2] 以下を選択し、「Save step」ボタン押下
Parameters | Explanations |
---|---|
Type | 「Custom JAR」を選択 |
Name | 任意の文字列(今回の場合、「demo-for-data-catalog」) |
Jar location | s3:// |
Arguments | 「Step0」のS3パス(今回の場合、「s3://your-s3-bucket/emr-filnk/glue-catalog-setup.sh」) |
Action if step fails | 「Continue」を選択 |
関連記事
Amazon EMR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/20/230519
Amazon EMR ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/05/27/175610
Amazon EMR ~ Flink / 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/07/16/000000
Amazon EMR ~ Flink / 入門編 ~
https://dk521123.hatenablog.com/entry/2023/08/19/025641