みなさん、こんにちは!
S3 Tables は表形式データの格納に最適化されたストレージサービスです。
表はIcebergテーブルとして管理されるため、Icebergをサポートする様々なクエリエンジンから直接SQLを実行することができます。
本記事では、S3 Tables を作成し SageMaker から利用する方法についてご紹介します。
利用手順
テーブルバケット作成
S3のコンソールに移動し、「テーブルバケット」を開きます。
Athena等からアクセスできるよう、「統合を有効にする」をクリックします。
「テーブルバケットを作成」をクリックし、テーブルバケットを作成します。
テーブル作成
「Athena でテーブルを作成」をクリックし、名前空間を作成します。
名前空間の作成が完了するとAthenaのクエリエディタが開くため、そこでテーブルの作成を行います。
今回はサンプルのSQLをそのまま実行します。
テーブルを作成すると、テーブルバケットにもテーブルが表示されます。
カタログ権限設定
SageMaker の「Overview」を開き、「Project overview」→「Project details」の「Project role ARN」の値をコピーします。
Lake Formation の「Data permissions」で「Grant」をクリックし、カタログの権限設定を行います。
ロールとカタログの設定は以下の通りです。
- IAM users and roles:「Project role ARN」の値
- Catalogs:S3 Tables のカタログ
上記の設定により、SageMaker Lakehouse に S3 Tables のカタログが表示されます。
クエリ実行
SageMaker メニューの「Build」→「Query Editor」でクエリエディタを開きます。
クエリエディタで以下のようにSQLを実行し、テーブルデータを取得することができます。
SELECT * FROM "s3tablescatalog/tani-s3-table-bucket"."s3_tables_namespace"."daily_sales";
まとめ
SageMaker で S3 Tables を利用する方法についてご紹介しました。
SageMaker は S3 Tables と統合できるようになっており、統合を有効化し権限を設定するだけで、別途カタログ設定する必要なく S3 Tables のデータにアクセスできます。
SageMaker と S3 Tables をご利用の方は、ぜひ本記事の方法を試してみてください。