翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Glue コンソールでのテーブルの使用
AWS Glue Data Catalog のテーブルは、データストア内のデータを表すメタデータ定義です。クローラの実行時にテーブルを作成するか、または、AWS Glue コンソールで手動でテーブルを作成できます。 コンソールの [TablesAWS Glue] (テーブル) リストに、テーブルのメタデータの値が表示されます。ETL (抽出、変換、ロード) ジョブを作成するときに、テーブル定義を使用してソースとターゲットを指定します。
注記
AWS マネジメントコンソールの最新の変更に伴い、既存の IAM ロール を SearchTables
許可を持つように変更することが必要になる場合があります。新しいロールを作成する場合、SearchTables
API 許可は既にデフォルトとして追加されています。
開始するには、AWS Management Console にサインインし、AWS Glue コンソール (https://console.aws.amazon.com/glue/
コンソールでテーブルを追加する
クローラを使用してテーブルを追加するには、[Add tables] (テーブルの追加)、[Add tables using a crawler] (クローラを使用してテーブルを追加) の順に選択します。次に、[Add crawler] (クローラの追加) ウィザードの手順に従います。クローラが実行されると、テーブルが AWS Glue Data Catalog に追加されます。詳細については、AWS Glue でのクローラーの定義 を参照してください。
Data Catalog の Amazon Simple Storage Service (Amazon S3) テーブル定義の作成に必要な属性が分かっている場合は、テーブルウィザードで作成できます。[Add tables] (テーブルの追加)、[Add table manually] (手動でのテーブルを追加) の順に選択し、[Add table] (テーブルの追加) ウィザードの手順に従います。
コンソールで手動でテーブルを追加するときは、以下の点を考慮します。
-
Amazon Athena からテーブルにアクセスする場合は、英数字とアンダースコア文字のみを使用して名前を指定してください。詳細については、「テーブル、データベース、および列の名前」を参照してください。
-
ソースデータの場所は Amazon S3 パスにする必要があります。
-
データのデータ形式は、ウィザードに表示されているいずれかの形式と一致する必要があります。対応する分類およびその他のテーブルプロパティは SerDe、選択した形式に基づいて自動的に入力されます。次の形式でテーブルを定義できます。
- Avro
-
Apache Avro JSON バイナリ形式。
- CSV
-
文字で区切られた値。また、区切り文字として、カンマ、パイプ、セミコロン、タブ、または Ctrl-A を指定します。
- JSON
-
JavaScript オブジェクト表記。
- XML
-
Extensible Markup Language 形式。データの行を定義する XML タグを指定します。列は行のタグ内で定義されます。
- Parquet
-
Apache Parquet 列指向ストレージ。
- ORC
-
Optimized Row Columnar (ORC) ファイル形式。Hive データを効率的に保存するために設計された形式。
-
テーブルのパーティションキーを定義できます。
-
現在、コンソールで作成した分割されたテーブルは、ETL ジョブで使用することはできません。
テーブル属性
以下に重要なテーブル属性を示します。
- 名前
-
名前は、テーブルの作成時に決定され、変更することはできません。多くの AWS Glue オペレーションでテーブル名を参照します。
- データベース
-
テーブルが存在するコンテナオブジェクト。このオブジェクトには、AWS Glue Data Catalog 内に存在するテーブルの組織名が含まれ、データストアの組織名とは異なる場合があります。データベースを削除すると、データベースに含まれるすべてのテーブルも Data Catalog から削除されます。
- 説明
-
テーブルの説明。テーブルの内容を理解しやすくするために説明を記入できます。
- テーブル形式
-
標準 AWS Glue テーブル、または Apache Iceberg 形式のテーブルの作成を指定します。
- 圧縮を有効にする
-
[圧縮を有効にする] を選択して、テーブル内の小さな Amazon S3 オブジェクトを大きなオブジェクトに圧縮します。
- IAM ロール
圧縮を実行するために、サービスはユーザーに代わって IAM ロールを引き受けます。ドロップダウンを使用して IAM ロールを選択できます。圧縮を有効にするために必要な許可がロールに付与されているようにしてください。
IAM ロールに必要な許可の詳細については、「 テーブル最適化の前提条件 」を参照してください。
- ロケーション
-
このテーブル定義が表すデータストア内のデータの場所へのポインタ。
- 分類
-
テーブルの作成時に指定された分類の値。通常、これはクローラが実行されてソースデータの形式を指定するときに書き込まれます。
- 最終更新日
-
Data Catalog でこのテーブルが更新された日付と時刻 (UTC)。
- 追加された日付
-
Data Catalog にこのテーブルが追加された日付と時刻 (UTC)。
- 廃止済み
-
AWS Glue により、Data Catalog のテーブルは元のデータストアに存在しなくなったことが分かると、そのテーブルは廃止されたとしてデータカタログにマークされます。廃止されたテーブルを参照するジョブを実行する場合、ジョブは失敗する可能性があります。廃止されたテーブルを参照するジョブを編集し、ソースおよびターゲットとして削除します。廃止されたテーブルが不要になったら削除することをお勧めします。
- Connection
-
AWS Glue でデータストアへの接続が必要な場合は、接続の名前がテーブルに関連付けられます。
テーブルの詳細の表示と編集
既存のテーブルの詳細を表示するには、リスト内のテーブル名を選択し、[Action, View details] (アクション、詳細を表示) を選択します。
テーブルの詳細にはテーブルのプロパティとスキーマが含まれます。このビューには、テーブルに定義された順序の列名、データ型、およびパーティションのキー列を含む、テーブルのスキーマが表示されます。列が複合型の場合は、以下の例に示すように、[View properties] (プロパティの表示) を選択して、そのフィールドの構造の詳細を表示します。
{ "StorageDescriptor": { "cols": { "FieldSchema": [ { "name": "primary-1", "type": "CHAR", "comment": "" }, { "name": "second ", "type": "STRING", "comment": "" } ] }, "location": "s3://aws-logs-111122223333-us-east-1", "inputFormat": "", "outputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "compressed": "false", "numBuckets": "0", "SerDeInfo": { "name": "", "serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde", "parameters": { "separatorChar": "|" } }, "bucketCols": [], "sortCols": [], "parameters": {}, "SkewedInfo": {}, "storedAsSubDirectories": "false" }, "parameters": { "classification": "csv" } }
StorageDescriptor
などのテーブルのプロパティの詳細については、「StorageDescriptor 構造」を参照してください。
テーブルのスキーマを変更するには、[Edit schema] (スキーマの編集) を選択し、列の追加および削除、列名の変更、データ型の変更をします。
スキーマを含むテーブルの異なるバージョンを比較するには、バージョンの比較を選択して、テーブルのスキーマの 2 つのバージョン side-by-side の比較を表示します。詳細については、「 テーブルスキーマのバージョンの比較 」を参照してください。
Amazon S3 パーティションを構成するファイルを表示するには、[View partition] (パーティションの表示) を選択します。Amazon S3 のテーブルでは、[Key] (キー) 列に、ソースデータストアでテーブルを分割するために使用されるパーティションキーが表示されます。パーティションは、日付、場所、または部門などのキー列の値に基づいて、テーブルを関連する部分に分割する方法です。パーティションの詳細については、インターネットで「hive パーティション」を検索してください。
注記
テーブルの詳細を表示するための step-by-step ガイダンスについては、 コンソールの「Explore table」チュートリアルを参照してください。
テーブルスキーマのバージョンの比較
テーブルスキーマの 2 つのバージョンを比較する場合、ネストされた行を展開して折りたたむことで、ネストされた行の変更を比較し、2 つのバージョンのスキーマを比較して side-by-side、テーブルのプロパティ を表示できます side-by-side。
バージョンの比較方法
-
AWS Glue コンソールから [テーブル] > [アクション] の順に選択し、[バージョンの比較] を選択します。
-
バージョンのドロップダウンメニューから、比較するバージョンを選択します。スキーマを比較すると、[スキーマ] タブがオレンジ色で強調表示されます。
-
2 つのバージョン間でテーブルを比較すると、テーブルスキーマが画面の左側と右側に表示されます。これにより、列名、データ型、キー、コメントフィールドを比較して、変更を視覚的に判断できます side-by-side。変更があると、色付きのアイコンでその変更の種類が表示されます。
-
削除済み — 赤いアイコンによる表示は、以前のバージョンのテーブルスキーマから列が削除されたことを示します。
-
編集済みまたは移動済み — 青いアイコンによる表示は、新しいバージョンのテーブルスキーマで列が変更または移動されたことを示します。
-
追加 — 緑色のアイコンによる表示は、新しいバージョンのテーブルスキーマに列が追加されたことを示します。
-
ネストされた変更 — 黄色のアイコンによる表示は、ネストされた列に変更が含まれていることを示します。列を選択して展開すると、削除、編集、移動、追加のいずれかが実行された列が表示されます。
-
-
検索バーのフィルタフィールドを使用すると、ここに入力した文字に基づいてフィールドを表示できます。いずれかのテーブルバージョンで列名を入力すると、フィルタリングされたフィールドが両方のテーブルバージョンに表示され、変更が行われた箇所がわかります。
-
プロパティを比較するには、[プロパティ] タブを選択します。
-
バージョンの比較を停止するには、[比較の停止] を選択してテーブルのリストに戻ります。
Iceberg テーブルの最適化
Apache Iceberg などのオープンテーブル形式を使用する Amazon S3 データレイクは、データを Amazon S3 オブジェクトとして保存します。データレイクテーブルに数千の小さな Amazon S3 オブジェクトがある場合、Iceberg テーブルのメタデータのオーバーヘッドが増加し、読み取りパフォーマンスに悪影響が及びます。Amazon Athena および Amazon EMR や AWS Glue ETL ジョブなどの AWS 分析サービスによる読み取りパフォーマンスを改善するために、AWS Glue Data Catalog は、データカタログの Iceberg テーブルのために、マネージド圧縮 (小さな Amazon S3 オブジェクトを大きなオブジェクトに圧縮するプロセス) を提供します。AWS Glue コンソール、Lake Formation コンソール、AWS CLI、または AWS API を使用して、データカタログ内の個々の Iceberg テーブルのために圧縮を有効または無効にすることができます。
テーブルオプティマイザーは、テーブルパーティションを絶えずモニタリングして、ファイル数とファイルサイズのしきい値を超えたときに、圧縮プロセスを開始します。データカタログでは、圧縮を開始するためのデフォルトのしきい値は 384 MB に設定されていますが、Iceberg ライブラリでは、圧縮のしきい値はターゲットファイルサイズの 75% 未満です。データカタログは、同時クエリに支障を来たすことなく圧縮を実行します。データカタログは、Parquet 形式のテーブルのデータ圧縮のみをサポートします。
テーブル最適化の前提条件
テーブルオプティマイザーは、テーブルの圧縮を有効にする際に指定する AWS Identity and Access Management (IAM) ロールの許可を引き受けます。IAM ロールには、データカタログ内のデータを読み取ったり、メタデータを更新したりするための許可が必要です。IAM ロールを作成し、次のインラインポリシーをアタッチできます。
-
Lake Formation に登録されていないデータの場所に対する Amazon S3 の読み取り/書き込み許可を付与する次のインラインポリシーを追加します。このポリシーには、データカタログ内のテーブルを更新するための許可、および AWS Glue が Amazon CloudWatch ログにログを追加したり、メトリクスを公開したりするのを許可するための許可も含まれています。Lake Formation に登録されていない Amazon S3 のソースデータへのアクセスは、Amazon S3 および AWS Glue アクションの IAM アクセス許可ポリシーによって決定されます。
次のインラインポリシーでは、
bucket-name
を Amazon S3 バケット名、aws-account-id
およびregion
をデータカタログの有効な AWS アカウント番号およびリージョン、database_name
をデータベース名、table_name
をテーブル名に置き換えます。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::
<bucket-name>
/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<bucket-name>
" ] }, { "Effect": "Allow", "Action": [ "glue:UpdateTable", "glue:GetTable" ], "Resource": [ "arn:aws:glue:<region>
:<aws-account-id>
:table/<database-name>
/<table-name>
", "arn:aws:glue:<region>
:<aws-account-id>
:database/<database-name>
", "arn:aws:glue:<region>
:<aws-account-id>
:catalog" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region>
:<aws-account-id>
:log-group:/aws-glue/iceberg-compaction/logs:*" } ] } -
Lake Formation で登録されたデータの圧縮を有効にするには、次のポリシーを使用します。
Lake Formation への Amazon S3 バケットの登録の詳細については、「ロケーションの登録に使用されるロールの要件」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:UpdateTable", "glue:GetTable" ], "Resource": [ "arn:aws:glue:
<region>
:<aws-account-id>
:table/<databaseName>
/<tableName>
", "arn:aws:glue:<region>
:<aws-account-id>
:database/<database-name>
", "arn:aws:glue:<region>
:<aws-account-id>
:catalog" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region>
:<aws-account-id>
:log-group:/aws-glue/iceberg-compaction/logs:*" } ] }圧縮ロールにテーブルに対する
IAM_ALLOWED_PRINCIPALS
グループ許可が付与されていない場合、そのロールにはテーブルに対する Lake Formation ALTER、DESCRIBE、INSERT、および DELETE 許可が必要です。 -
(オプション) サーバー側の暗号化を使用して暗号化された Amazon S3 バケットにデータがある Iceberg テーブルを圧縮するには、圧縮ロールに Amazon S3 オブジェクトを復号して、暗号化されたバケットにオブジェクトを書き込むための新しいデータキーを生成するアクセス許可が必要です。次のポリシーを目的の AWS KMS キーに追加します。バケットレベルの暗号化のみがサポートされています。
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
<aws-account-id>
:role/<compaction-role-name>
" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" } -
(オプション) Lake Formation で登録されたデータの場所については、場所を登録するために使用されるロールには、Amazon S3 オブジェクトを復号したり、暗号化されたバケットにオブジェクトを書き込むための新しいデータキーを生成したりする許可が必要です。詳細については、「暗号化された Amazon S3 の場所の登録」を参照してください。
-
(オプション) AWS KMS キーが別の AWS アカウントに保存されている場合は、圧縮ロールに次の許可を含める必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": ["arn:aws:kms:
<REGION>
:<KEY_OWNER_ACCOUNT_ID>
:key/<KEY_ID>
"] } ] } -
圧縮を実行するために使用するロールには、そのロールに対する
iam:PassRole
許可が必要です。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::
<account-id>
:role/<compaction-role-name>
" ] } ] } -
圧縮プロセスを実行する IAM ロールを引き受けるには、次の信頼ポリシーを AWS Glue サービスのロールに追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
圧縮の有効化
AWS Glue コンソール、Lake Formation コンソール、AWS CLI、または AWS API を使用して、データカタログ内の Apache Iceberg テーブルのために圧縮を有効にすることができます。新しいテーブルについては、テーブル形式として Apache Iceberg を選択し、テーブルの作成時に圧縮を有効にすることができます。圧縮は、新しいテーブルのためにデフォルトで無効になっています。
圧縮を有効にすると、[テーブル最適化] タブに次の圧縮の詳細が表示されます (約 15~20 分後)。
-
開始時刻 - Lake Formation 内で圧縮プロセスが開始された時刻。値は UTC 時刻のタイムスタンプです。
-
終了時刻 - Lake Formation で圧縮プロセスが終了した時刻。値は UTC 時刻のタイムスタンプです。
-
ステータス – 圧縮ジョブのステータス。値は成功または失敗です。
-
圧縮されたファイル - 圧縮されたファイルの総数。
-
圧縮されたバイト数 - 圧縮された合計バイト数。
圧縮の無効化
AWS Glue コンソールまたは AWS CLI を使用して、特定の Apache Iceberg テーブルの自動圧縮を無効にできます。
圧縮の詳細の表示
Apache Iceberg の圧縮ステータスは、AWS Glue コンソール、AWS CLI、または AWS API オペレーションを使用して表示できます。
Amazon CloudWatch メトリクスの表示
圧縮が正常に実行されると、サービスは圧縮ジョブのパフォーマンスに関する Amazon CloudWatch メトリクスを作成します。CloudWatch コンソールに移動し、メトリクス 、すべてのメトリクス を選択します。メトリクスは、特定の名前空間 (AWS Glue など)、テーブル名、またはデータベース名でフィルタリングできます。
詳細については、「Amazon CloudWatch ユーザーガイド」の「使用可能なメトリクスを表示する」を参照してください。
-
圧縮されたバイト数
-
圧縮されたファイル数
-
ジョブに割り当てられた DPU の数
-
ジョブの実行時間 (時間単位)
オプティマイザーの削除
AWS CLI または AWS API オペレーションを使用して、テーブルのオプティマイザーと関連するメタデータを削除できます。
テーブルの圧縮履歴を削除するには、次の AWS CLI コマンドを実行します。
aws glue delete-table-optimizer \ --catalog-id
123456789012
\ --database-nameiceberg_db
\ --table-nameiceberg_table
\ --type compaction
テーブルのオプティマイザーを削除するには、DeleteTableOptimizer
オペレーションを使用します。
考慮事項と制約事項
データ圧縮は次をサポートします。
データ型: ブール、整数、長整数、浮動小数点、倍精度浮動小数点数、文字列、10 進数、日付、時刻、タイムスタンプ、文字列、UUID、バイナリ
圧縮: zstd、gzip、snappy、非圧縮
-
暗号化: データ圧縮では、デフォルトの Amazon S3 暗号化 (SSE-S3) とサーバー側 KMS 暗号化 (SSE-KMS) のみがサポートされます。
-
ビンパック圧縮
スキーマ進化
1128MB2 MB の範囲内のターゲットファイルサイズ (iceberg 設定のwrite.target-file-size-bytes property) を持つテーブル。
リージョン
アジアパシフィック(東京)
アジアパシフィック(ソウル)
アジアパシフィック(ムンバイ)
欧州 (アイルランド)
欧州 (フランクフルト)
米国東部(バージニア北部)
米国東部 (オハイオ)
米国西部(北カリフォルニア)
-
基礎となるデータを保存する Amazon S3 バケットが別のアカウントにある場合、データカタログが存在するアカウントから圧縮を実行できます。これを実行するには、圧縮ロールが Amazon S3 バケットにアクセスできる必要があります。
データ圧縮は現在、次をサポートしていません。
データ型: 固定小数点
圧縮: brotli、lz4
パーティションの仕様が進化する中でのファイルの圧縮。
通常の並べ替えまたは Z オーダーの並べ替え
ファイルのマージまたは削除: 圧縮プロセスでは、削除ファイルが関連付けられているデータファイルはスキップされます。
-
クロスアカウントテーブルでの圧縮: クロスアカウントテーブルでは圧縮を実行できません。
-
クロスリージョンテーブルでの圧縮: クロスリージョンテーブルでは圧縮を実行できません。
リソースのリンクでの圧縮の有効化
Amazon S3 バケットの VPC エンドポイント