

# AWS Glue 型システム
<a name="glue-types"></a>

 AWS Glue は、複数の型のシステムを使用し、さまざまな方法でデータを格納するデータシステムに対して汎用性の高いインターフェイスを提供します。このドキュメントでは、AWS Glue 型システムとデータ標準を明確にします。

## AWS Glue データカタログ型
<a name="glue-types-catalog"></a>

データカタログは、さまざまなデータシステムに格納されているテーブルとフィールドのレジストリであり、メタストアです。AWS Glue クローラーや AWS Glue with Spark ジョブなどの AWS Glue コンポーネントをデータカタログに書き込むときは、フィールドの型を追跡するための内部型システムを使用して書き込みを行います。これらの値は、AWS Glue コンソールのテーブルスキーマの**データ型**列に表示されます。このタイプのシステムは、Apache Hive の型のシステムに基づいています。Apache Hive の型のシステムの詳細については、Apache Hive wiki の「[型](https://cwiki.apache.org/confluence/display/hive/languagemanual+types)」を参照してください。特定の型とサポートの詳細については、スキーマビルダーの一部として AWS Glue コンソールに例が用意されています。

### 検証、互換性、その他の用途
<a name="w2aac11c31b5b5"></a>

データカタログは、型フィールドに書き込まれた型を検証しません。AWS Glue コンポーネントがデータカタログを読み書きする場合、相互に互換性を保つことができます。AWSGlue コンポーネントは、Hive 型との高い互換性を保つことも目的としています。ただし、AWS Glue コンポーネントはすべての Hive 型との互換性を保証するものではありません。これにより、データカタログ内のテーブルを操作するときに Athena DDL などのツールとの相互運用が可能になります。

データカタログは型を検証しないため、他のサービスは、Hive の型のシステムに厳密に準拠するシステムやその他のシステムを使用することで、型を追跡するためにデータカタログを利用できます。

## Spark スクリプトを使用した AWS Glue の型
<a name="glue-types-spark"></a>

Spark スクリプトを使用した AWS Glue がデータセットを解釈または変換する場合、スクリプトで使用されているデータセットのインメモリ表現である `DynamicFrame` が提供されます。`DynamicFrame` の目的は、Spark `DataFrame` と似ています。つまり、Spark がデータに対して変換をスケジュールして実行できるようにデータセットをモデル化します。`toDF` および `fromDF` メソッドを提供することにより、`DynamicFrame` の型表現が `DataFrame` と相互互換であることを保証します。

型情報を `DataFrame` に推測または提供できる場合は、特に文書化されていない限り、`DynamicFrame` に推測または提供できます。特定のデータ形式向けに最適化されたリーダーまたはライターを提供するとき、Spark がお客様のデータを読み書きできる場合は、文書に記載されている制限に従って、提供されているリーダーおよびライターも読み取りまたは書き込みを行うことができます。リーダーおよびライターの詳細については、「[AWS Glue for Spark での入出力のデータ形式に関するオプション](aws-glue-programming-etl-format.md)」を参照してください。

### Choice 型
<a name="w2aac11c31b7b7"></a>

`DynamicFrames` は、ディスク上の行ごとの値が一貫性のない型を持つ可能性があるデータセットのフィールドをモデル化するメカニズムを提供します。例えば、フィールドで特定の行に文字列として格納された数値が、他の行では整数として格納されている場合があります。このメカニズムは `Choice` と呼ばれるインメモリ型です。`ResolveChoice` メソッドのような、Choice の列を具体的な型に解決するための変換を行うことができます。AWSGlue ETL では、通常の操作では Choice 型をデータカタログに書き込むことはありません。Choice 型は、データセットの DynamicFrame メモリモデルのコンテキストでのみ存在します。Choice 型の使用例については、「[コード例: ResolveChoice、Lambda、および ApplyMapping を使用したデータ準備](aws-glue-programming-python-samples-medicaid.md)」を参照してください。

## AWS Glue クローラーの型
<a name="glue-types-crawler"></a>

クローラーは、データセット用に一貫性のある使いやすいスキーマを作成し、それをデータカタログに格納して他の AWS Glue コンポーネントや Athena で使用できるようにすることを目的としています。クローラーは、データカタログの前のセクション「[AWS Glue データカタログ型](#glue-types-catalog)」で説明したように、型を扱います。列に 2 つ以上の型の値が含まれる「Choice」型のシナリオで使用可能な型を作成するために、クローラーは潜在的な型をモデル化した `struct` 型を作成します。