Amazon S3 接続 - AWS Glue

Amazon S3 接続

AWS Glue for Spark を使用して Amazon S3 内のファイルの読み込みと書き込みを行うことができます。AWSGlue for Spark は、CSV、Avro、JSON、Orc、Parquet など、Amazon S3 に保存されている多くの一般的なデータ形式をそのままでサポートしています。サポートされるデータ形式の詳細については、「AWS Glue for Spark での入出力のデータ形式に関するオプション」を参照してください。各データ形式が、異なる AWS Glue の機能のセットをサポートする場合があります。機能のサポートの詳細については、使用しているデータ形式のページを参照してください。さらに、Hudi、Iceberg、Delta Lake のデータレイクフレームワークに保存されているバージョン対応ファイルを読み書きできます。データレイクフレームワークの詳細については、「AWS Glue ETL ジョブでのデータレイクフレームワークの使用」を参照してください。

AWS Glue を使用すると、書き込み中に Amazon S3 オブジェクトをフォルダ構造に分割し、簡単な設定でパーティションごとに取得してパフォーマンスを向上させることができます。また、データを変換する際に小さなファイルをまとめてグループ化するように設定してパフォーマンスを向上させることもできます。Amazon S3 では、bzip2 の読み込み、書き込み、gzip アーカイブを行うことができます。

S3 接続の設定

AWS Glue with Spark ジョブで Amazon S3 に接続するには、いくつかの前提条件が必要です。

  • AWS Glue ジョブには、関連する Amazon S3 バケットに対する IAM 権限が必要です。

場合によっては、追加の前提条件を設定する必要があります。

  • クロスアカウントアクセスを設定するときは、Amazon S3 バケットで適切なアクセス制御を行います。

  • セキュリティ上の理由から、Amazon S3 リクエストを Amazon VPC 経由でルーティングすることもできます。このアプローチでは、帯域幅や可用性の課題が生じる場合があります。詳細については、「Amazon S3 用の VPC エンドポイント」を参照してください。

Amazon S3 接続のオプションのリファレンス

Simple Storage Service (Amazon S3) への接続を指定します。

Amazon S3 はテーブルではなくファイルを管理するため、このドキュメントに記載されている接続プロパティを指定することに加えて、ファイルタイプに関する追加の設定を指定する必要があります。この情報はデータ形式オプションを使用して指定します。形式オプションの詳細については、「AWS Glue for Spark での入出力のデータ形式に関するオプション」を参照してください。AWS Glue データカタログと統合してこの情報を指定することもできます。

接続オプションとフォーマットオプションの違いの例として、create_dynamic_frame_from_options メソッドが connection_typeconnection_optionsformat および format_options をどのように使用するかを考えてみます。このセクションでは、connection_options に提供されるパラメータについて具体的に説明します。

"connectionType": "s3" では、次の接続オプションを使用します。

  • "paths": (必須) 読み取りのソースとなる Amazon S3 パスのリスト。

  • "exclusions": (オプション) 除外する Unix スタイルの glob パターンの JSON リストを含む文字列。例えば、"[\"**.pdf\"]" はすべての PDF ファイルを除外します。AWS Glue がサポートする glob 構文の詳細については、「包含パターンと除外パターンを使用する」を参照してください。

  • "compressionType": または「compression」: (オプション) データの圧縮方法を指定します。Simple Storage Service (Amazon S3) ソース用には "compressionType" を、Simple Storage Service (Amazon S3) ターゲット用には "compression" を使用します。データに標準のファイル拡張子が付いている場合、このオプションは一般的に不要です。指定できる値は "gzip" および "bzip2" です。特定の形式では、他の圧縮形式がサポートされている場合もあります。機能のサポートの詳細については、データ形式のページを参照してください。

  • "groupFiles": (オプション) 入力ファイルが 50,000 個を超える場合、デフォルトでファイルのグループ化が有効化されます。入力ファイルが 50,000 個未満の場合にグループ化を有効化するには、このパラメータに "inPartition" を設定します。入力ファイルが 50,000 個を超える場合に、グループ化を無効にするには、このパラメータを "none" に設定します。

  • "groupSize": (オプション) ターゲットグループのサイズ (バイト単位)。デフォルトは、入力データのサイズとクラスターのサイズに基づいて計算されます。入力ファイルが 50,000 個未満の場合、このオプションを有効にするには、"groupFiles""inPartition" に設定する必要があります。

  • "recurse": (オプション) true に設定した場合は、指定したパスの下にあるすべてのサブディレクトリ内のファイルを再帰的に読み取ります。

  • "maxBand": (オプション、詳細設定) このオプションでは、s3 リストの一貫性が認められるまでの期間をミリ秒単位で指定します。Amazon S3 の結果整合性を担保するために、直前の maxBand ミリ秒以内の変更タイムスタンプが付いたファイルが、特に JobBookmarks の使用時に追跡されます。ほとんどのユーザーはこのオプションを設定する必要はありません。デフォルトは 900000 ミリ秒 (15 分) です。

  • "maxFilesInBand": (オプション、詳細設定) このオプションは、直前の maxBand 秒間に保存するファイルの最大数を指定します。この数を超えた場合、余分なファイルはスキップされ、次のジョブ実行時にのみ処理されます。ほとんどのユーザーはこのオプションを設定する必要はありません。

  • "isFailFast": (オプション) このオプションにより、AWS Glue ETL ジョブがリーダー解析の例外をスローするかどうかを決定します。true に設定すると、Spark タスクが 4 回の再試行のうちにデータを正しく解析できなかった場合、ジョブは速やかに失敗します。

  • "catalogPartitionPredicate": (オプション) 読み込みに使用。SQL WHERE 句の内容。非常に多数のパーティションを含むデータカタログテーブルから読み込むときに使用されます。データカタログインデックスから一致するパーティションを取得します。create_dynamic_frame_from_catalog メソッド (および他の類似メソッド) のオプション push_down_predicate と共に使用します。詳細については、「カタログのパーティション述語を使用したサーバー側のフィルタリング」を参照してください。

  • "partitionKeys": (オプション) 書き込みに使用。列ラベル文字列の配列。AWSGlue は、この設定で指定されたとおりにデータを分割します。詳細については、「パーティションの書き込み」を参照してください。

  • "excludeStorageClasses": (オプション) 読み込みに使用。Amazon S3 ストレージクラスを指定する文字列の配列。AWSGlue は、この設定に基づいて Amazon S3 オブジェクトを除外します。詳細については、「Amazon S3 ストレージクラスの除外」を参照してください。

廃止されたデータ形式の接続構文

特定のデータ形式には、特定の接続タイプ構文を使用してアクセスできます。この構文は廃止されました。代わりに AWS Glue for Spark での入出力のデータ形式に関するオプション で提供されている s3 接続タイプと形式オプションを使用して形式を指定することをお勧めします。

"connectionType": "orc"

Apache Hive Optimized Row Columnar (ORC) ファイル形式で、Amazon S3 に保存されるファイルへの接続を指定します。

"connectionType": "orc" では、次の接続オプションを使用します。

  • paths: (必須) 読み取りのソースとなる Amazon S3 パスのリスト。

  • (その他のオプション名/値ペア): 書式設定オプションなどのその他のオプションはすべて SparkSQL DataSource に直接渡されます。

"connectionType": "parquet"

Apache Parquet ファイル形式で、Amazon S3 に保存されるファイルへの接続を指定します。

"connectionType": "parquet" では、次の接続オプションを使用します。

  • paths: (必須) 読み取りのソースとなる Amazon S3 パスのリスト。

  • (その他のオプション名/値ペア): 書式設定オプションなどのその他のオプションはすべて SparkSQL DataSource に直接渡されます。