AWS Glue 連携データセットを作成する
このドキュメントでは、BigQuery で AWS Glue の既存のデータベースにリンクされる連携データセットを作成する方法について説明します。
連携データセットは、BigQuery と外部データソース間のデータセット レベルでの接続です。連携データセット内のテーブルは、対応する外部データソース内のテーブルから自動的に入力されます。BigQuery では、これらのテーブルに対して直接クエリを実行できますが、変更、追加、削除はできません。ただし、外部データソースでの更新は、BigQuery に自動的に反映されます。
始める前に
AWS Glue データにアクセスできる接続があることを確認します。
接続を作成または変更するには、Amazon S3 に接続するを参照し、BigQuery 用の AWS Identity and Access Management ポリシーに、次に挙げる AWS Glue 用の追加ポリシー ステートメントを含めます。
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTable", "glue:GetTables", "glue:GetPartitions" ], "Resource": [ "arn:aws:glue:REGION:ACCOUNT_ID:catalog", "arn:aws:glue:REGION:ACCOUNT_ID:database/DATABASE_NAME", "arn:aws:glue:REGION:ACCOUNT_ID:table/DATABASE_NAME/*" ] }
次のように置き換えます。
REGION
: AWS リージョン(例:us-east-1
)ACCOUNT_ID:
: 12 桁の AWS アカウント IDDATABASE_NAME
: AWS Glue データベース名
必要な権限
連携データセットの作成に必要な権限を取得するには、BigQuery 管理者(roles/bigquery.admin
)IAM ロールの付与を管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。
この事前定義ロールには、連携データセットの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
連携データセットを作成するには、次の権限が必要です。
-
bigquery.datasets.create
-
bigquery.connections.use
-
bigquery.connections.delegate
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
BigQuery における IAM ロールと権限の詳細については、IAM の概要をご覧ください。
連携データセットを作成する
連携データセットを作成する手順は次のとおりです。
bq
コマンドライン環境で bq mk
コマンドを使用してデータセットを作成します。
bq --location=LOCATION mk --dataset \ --external_source aws-glue://AWS_GLUE_SOURCE \ --connection_id PROJECT_ID.CONNECTION_LOCATION.CONNECTION_NAME \ DATASET_NAME
次のように置き換えます。
LOCATION
: BigQuery での新しいデータセットのロケーション(例:aws-us-east-1
)。データセットを作成した後に、そのロケーションを変更することはできません。デフォルトのロケーション値を設定するには、.bigqueryrc
ファイルを使用します。AWS_GLUE_SOURCE
: AWS Glue データベースの Amazon Resource Name(ARN)(例:arn:aws:glue:us-east-1:123456789:database/test_database
)。PROJECT_ID
: BigQuery プロジェクト ID。CONNECTION_LOCATION
: AWS 接続のロケーション(例:aws-us-east-1
)。CONNECTION_NAME
: AWS 接続の名前。DATASET_NAME
: BigQuery での新しいデータセットの名前。デフォルト プロジェクト以外のプロジェクト内にデータセットを作成するには、PROJECT_ID
:DATASET_NAME
の形式でそのプロジェクト ID をデータセット名に追加します。
API
datasets.insert
メソッドを、定義済みのデータセット リソースと AWS Glue データベースの externalDatasetReference
フィールドを指定して呼び出します。
連携データセット内のテーブルを一覧表示する
連携データセット内のクエリに使用できるテーブルを一覧表示するには、データセットの一覧表示をご覧ください。
テーブル情報の取得
スキーマの詳細など、連携データセット内のテーブルの情報を取得するには、テーブル情報の取得をご覧ください。
テーブルへのアクセスの制御
連携データセット内のテーブルへのアクセスを管理するには、IAM でリソースへのアクセスを制御するをご覧ください。
AWS Glue データのクエリ
連携データセット内のテーブルのクエリは、他の BigQuery データセット内のテーブルに対するクエリと同じです。
AWS Glue テーブルでは、次の形式でクエリを実行できます。
- CSV(圧縮、非圧縮)
- JSON(圧縮、非圧縮)
- Parquet
- ORC
- Avro
- Iceberg
テーブル マッピングの詳細
AWS Glue データベースでアクセス権を付与するすべてのテーブルは、BigQuery データセットで同等のテーブルとして表示されます。
形式
各 BigQuery テーブルの形式は、それぞれの AWS Glue テーブルの次のフィールドによって決まります。
InputFormat
(Table.StorageDescriptor.InputFormat
)OutputFormat
(Table.StorageDescriptor.OutputFormat
)SerializationLib
(Table.StorageDescriptor.SerdeInfo.SerializationLibrary
)
唯一の例外は、TableType
(Table.Parameters["table_type"]
)フィールドを使用する Iceberg テーブルです。
たとえば、次のフィールドを含む AWS Glue テーブルは、BigQuery の ORC テーブルにマッピングされます。
InputFormat
="org.apache.hadoop.hive.ql.io.orc.OrcInputFormat"
OutputFormat
="org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat"
SerializationLib
="org.apache.hadoop.hive.ql.io.orc.OrcSerde"
ロケーション
各 BigQuery テーブルのロケーションは、次の条件によって決まります。
- Iceberg テーブル: AWS Glue テーブルの
Table.Parameters["metadata_location"]
フィールド - Iceberg 以外のパーティションが分割されていないテーブル: AWS Glue テーブルの
Table.StorageDescriptor.Location
フィールド - Iceberg 以外のパーティション分割テーブル: AWS Glue GetPartitions API
その他のプロパティ
さらに、一部の AWS Glue テーブル プロパティは、BigQuery の形式固有のオプションに自動的にマッピングされます。
形式 | SerializationLib | AWS Glue テーブルの値 | BigQuery オプション |
---|---|---|---|
CSV | LazySimpleSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["field.delim"] | CsvOptions.fieldDelimiter |
CSV | LazySimpleSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | CsvOptions.encoding |
CSV | LazySimpleSerDe | Table.StorageDescriptor.Parameters["skip.header.line.count"] | CsvOptions.skipLeadingRows |
CSV | OpenCsvSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["separatorChar"] | CsvOptions.fieldDelimiter |
CSV | OpenCsvSerDe | Table.StorageDescriptor.SerdeInfo.Parameters["quoteChar"] | CsvOptions.quote |
CSV | OpenCsvSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | CsvOptions.encoding |
CSV | OpenCsvSerDe | Table.StorageDescriptor.Parameters["skip.header.line.count"] | CsvOptions.skipLeadingRows |
JSON | Hive JsonSerDe | Table.StorageDescriptor.Parameters["serialization.encoding"] | JsonOptions.encoding |
連携データセットにビューを作成する
連携データセット内にはビューを作成できません。一方、連携データセットのテーブルに基づく標準データセットには、ビューを作成できます。詳細については、ビューの作成をご覧ください。
連携データセットを削除する
連携データセットを削除は、他の BigQuery データセットの削除と同じです。詳細については、データセットの削除をご覧ください。
料金
料金については、BigQuery Omni の料金をご覧ください。
制限事項
- すべての BigQuery Omni の制限が適用されます。
- AWS Glue 連携データセットのテーブル内のデータやメタデータは、追加、削除、更新できません。
- AWS Glue 連携データセットには、新しいテーブルやマテリアライズド ビューを作成できません。
- AWS Glue 連携データセットは、bq ツールと API でのみ作成できます。Google Cloud コンソールはサポートされていません。
INFORMATION_SCHEMA
ビューはサポートされていません。- 行レベルのセキュリティ、列レベルのセキュリティ、メタデータのキャッシュ保存、データ マスキングはサポートされていません。
- Avro テーブル用の Apache Hive データ型
UNION
はサポートされていません。
次のステップ
- BigQuery Omni の詳細を学習する。
- AWS ラボで BigQuery Omni を試す。