AWS Glue で Avro 形式を使用する
AWS Glue はソースからデータを取得し、さまざまなデータ形式で保存および転送されたターゲットにデータを書き込みます。このドキュメントでは、データが Avro データ形式で保存または転送される場合に、AWS Glue でデータを使用する際に利用できる機能について説明します。
AWS Glue は Avro 形式の使用をサポートしています。この形式は、パフォーマンス指向の行ベースのデータ形式です。標準局による形式の概要については、「Apache Avro 1.8.2 Documentation
AWS Glue を使用して、Amazon S3 およびストリーミングソースから Avro ファイルを読み取り、Avro ファイルを Amazon S3 に書き込むことができます。S3 から、Avro ファイルが含まれる bzip2
および gzip
アーカイブを読み書きすることができます。さらに、Avro ファイルが含まれる deflate
、snappy
、xz
アーカイブを書き込むこともできます。このページで説明する設定ではなく、S3 接続パラメータ 上で圧縮動作を設定します。
次の表は、Avro 形式のオプションをサポートする一般的な AWS Glue オペレーションを示しています。
読み込み | 書き込み | ストリーミングの読み取り | 小さなファイルのグループ化 | ジョブのブックマーク |
---|---|---|---|---|
サポート | サポート | サポート対象* | サポートされていません | サポート |
制限付きで、* がサポートされています。詳細については、「Avro ストリーミングソースに関する注意事項と制約事項」を参照してください。
例: S3 から Avro ファイルまたはフォルダを読み取る
前提条件: 読み取る Avro ファイルまたはフォルダへの S3 パス (s3path
) が必要です。
設定: 関数オプションで format="avro"
を指定します。connection_options
で、paths
キーを使用して s3path
を指定します。リーダーが S3 とやり取りする方法は、connection_options
で設定できます。詳細については、AWS Glue: Amazon S3 接続のオプションのリファレンス の「ETL の入力および出力のデータ形式オプション」を参照してください。リーダーが Avro ファイルを解釈する方法は、format_options
で設定できます。詳細については、Avro 設定リファレンスを参照してください。
次の AWS Glue ETL スクリプトは、S3 から Avro ファイルまたはフォルダを読み取るプロセスを示しています。
例: Avro ファイルおよびフォルダを S3 に書き込む
前提条件: 初期化された DataFrame (dataFrame
) または DynamicFrame (dynamicFrame
) が必要です。また、予想される S3 出力パスである s3path
も必要になります。
設定: 関数オプションで format="avro"
を指定します。connection_options
で、paths
キーを使用して s3path
を指定します。ライターが S3 と対話する方法を、connection_options
でさらに詳しく変更することができます。詳細については、AWS Glue: Amazon S3 接続のオプションのリファレンス の「ETL の入力および出力のデータ形式オプション」を参照してください。リーダーが Avro ファイルを解釈する方法は、format_options
で変更できます。詳細については、Avro 設定リファレンスを参照してください。
次の AWS Glue ETL スクリプトは、S3 に Avro ファイルまたはフォルダを書き込むプロセスを示しています。
Avro 設定リファレンス
AWS Glue ライブラリが format="avro"
を指定する場合は、以下の format_options
を使用することができます。
version
– サポートする Apache Avro リーダー/ライター形式のバージョンを指定します。デフォルト値は「1.7」です。Avro 論理型の読み取りと書き込みを有効にするには、format_options={"version": “1.8”}
を指定します。詳細については、「Apache Avro 1.7.7 の仕様」および「Apache Avro 1.8.2 の仕様 」を参照してください。 Apache Avro 1.8 コネクタは、次の論理型変換をサポートしています。
リーダーの場合: この表に、Avro リーダー 1.7 と 1.8 について、Avro データ型 (論理型と Avro プリミティブ型) と AWS GlueDynamicFrame
データ型の間での型変換を示します。
Avro データ型: 論理型 |
Avro データ型: Avro プリミティブ型 |
GlueDynamicFrame データ型: Avro リーダー 1.7 |
GlueDynamicFrame データ型: Avro リーダー 1.8 |
---|---|---|---|
10 進数 | bytes | BINARY | 10 進数 |
10 進数 | 固定 | BINARY | 10 進数 |
日付 | 整数 | INT | 日付 |
時間 (ミリ秒) | 整数 | INT | INT |
時間 (マイクロ秒) | long | LONG | LONG |
タイムスタンプ (ミリ秒) | long | LONG | タイムスタンプ |
タイムスタンプ (マイクロ秒) | long | LONG | LONG |
所要時間 (論理型ではない) | 12 で固定 | BINARY | BINARY |
ライターの場合: この表に、Avro ライター 1.7 と 1.8 について、データ型と Avro データ型 AWS GlueDynamicFrame
の間での型変換を示します。
AWS GlueDynamicFrame データ型 |
Avro データ型: Avro ライター 1.7 |
Avro データ型: Avro タイター 1.8 |
---|---|---|
10 進数 | 文字列 | decimal |
日付 | 文字列 | date |
タイムスタンプ | 文字列 | timestamp-micros |
Avro Spark DataFrame サポート
Spark DataFrame API から Avro を使用するには、対応する Spark のバージョン用の Spark Avro プラグインをインストールする必要があります。ジョブで使用できる Spark のバージョンは、AWS Glue のバージョンによって決まります。Spark のバージョンの詳細については、「AWS Glue バージョン」を参照してください。このプラグインは Apache によって管理されており、特定のサポートを保証するものではありません。
AWS Glue 2.0 - Spark Avro プラグインのバージョン 2.4.3 を使用します。この JAR は Maven Central にあります。org.apache.spark:spark-avro_2.12:2.4.3
AWS Glue 3.0 - Spark Avro プラグインのバージョン 3.1.1 を使用します。この JAR は Maven Central にあります。org.apache.spark:spark-avro_2.12:3.1.1
AWS Glue の ETL ジョブに追加の JAR を含めるには、--extra-jars
ジョブパラメータを使用します。ジョブパラメータについては、「AWS Glue ジョブでジョブパラメータを使用する」を参照してください。AWS Management Console で、このパラメータを設定することもできます。