View a markdown version of this page

標準ストレージクラスの S3 アーカイブオブジェクトを読み取る - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

標準ストレージクラスの S3 アーカイブオブジェクトを読み取る

AWS Glue を使用する

MySQL から Amazon S3 にオフロードしたデータでは、リレーショナルデータベース管理システム (RDBMS) に典型的な構造剛性と一貫性が保持されます。

AWS Glue クローラーは、S3 オブジェクトをクロールして、データ型を推測し、テーブルメタデータを外部テーブル DDL として作成します。クローラージョブの設定時には、Amazon S3 をソースに使用し、すべてのデータファイルが作成されている、S3 プレフィックスの場所を指定します。設定には、以下のような項目が含まれます。

  • クローラー実行オプション

  • オプションのテーブルプレフィックス設定

  • テーブル作成のためのターゲットデータベース

  • 必要なアクセス許可を持つ IAM ロール

ジョブを呼び出すと、クローラーが、データをスキャンしてスキーマを推測し、AWS Glue データカタログAWS Glue テーブルとして保存します。AWS Glue テーブルは基本的に外部テーブルであり、Amazon EMRAmazon AthenaAmazon Redshift Spectrum、Apache Hive などの分析サービスを使用して、通常のデータベーステーブルに実行するクエリと同様、SQL ステートメントでクエリできます。クローラーの詳細については、AWS Glue ドキュメントを参照してください。

.csv ファイルで列ヘッダーを指定済みの場合、結果的に作成されるテーブル列名には、そのヘッダーと同じフィールド名が反映されます。データ型は、データオブジェクトの値に基づいて推測されます。

Parquet ファイルの場合、スキーマはデータそのものに保持されており、結果的に作成されるテーブルには、そのファイルと同じフィールド名とデータ型が反映されます。

あるいは、Athena 内で DDL を手動で実行して、必要な列名とデータ型を持つテーブル定義を作成することもできます。これにより、データカタログ内にテーブル定義が作成されます。Athena テーブル作成の詳細については、Amazon Athena ドキュメントを参照してください。

注: CSV ファイルにヘッダー行がない場合は、汎用的な c_0、c_1、c_2 というフィールド名が作成されます。

Amazon S3 Select の使用

Amazon S3 Select では、SQL 式を使用したプログラムによって、S3 オブジェクトを読み取ることができます。この API オペレーションを呼び出すには、AWS CLI コマンドの select-object-content を使用するか、Boto3 などの SDK を使用して Python から select_object_content オペレーションを呼び出すと良いでしょう。

この API オペレーションでは SQL ステートメントをパラメータとして使用できるため、JSON 型と Parquet 型のファイルのみを読み取ることが可能です。その結果は、出力ファイルとしてリダイレクトすることができます。

こうしたオペレーションは、S3 オブジェクトごとに呼び出されるため、ファイルが複数ある場合は、オペレーションを再帰的に実行します。

AWS CLI を使用した、オペレーションの実行方法は、AWS CLI ドキュメントで詳しく確認できます。Python SDK Boto3 を使用した、S3 Select の実行方法は、Boto3 ドキュメントで詳しく確認できます。