翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
分類子の定義と管理
分類子はデータをデータストアに読み取ります。データの形式を認識すると、スキーマが生成されます。分類子も、形式の認識がどれほど確実かを示す確信度数を返します。
AWS Glue では一連の組み込み分類子が用意されていますが、カスタム分類子を作成することもできます。AWS Glue は、クローラ定義で指定した順序で、カスタム分類子を最初に呼び出します。カスタム分類子から返された結果に応じて、AWS Glue が組み込みの分類子を呼び出す場合もあります。処理中に分類子が certainty=1.0
を返した場合、正しいスキーマを 100% 確実に作成できることを示しています。次に、AWS Glue はその分類子の出力を使用します。
分類子が certainty=1.0
を返さない場合、AWS Glue は最も高い確実性を持つ分類子の出力を使用します。どの分類子からも 0.0
以上の確実性が返されない場合、AWS Glue は UNKNOWN
のデフォルト分類文字列を返します。
分類子を使用するタイミング
データストアをクロールして AWS Glue Data Catalogでメタデータテーブルを定義する際に分類子を使用します。順序が設定された一連の分類子を使用してクローラをセットアップできます。クローラが分類子を呼び出す際、分類子はデータが認識されるかどうかを判断します。分類子でデータを認識できないか、100% 確実ではない場合、クローラはリストにある次の分類子を呼び出して、データを認識できるかどうか判断します。
AWS Glue コンソールを使用して分類子を作成する方法の詳細については、「AWS Glue コンソールを使用した分類子の作成」を参照してください。
カスタム分類子
分類子の出力には、ファイルの分類や形式 (たとえば、json
)、およびファイルのスキーマを示す文字列が含まれます。カスタム分類子の場合は、分類子のタイプに基づいてスキーマを作成するためのロジックを定義します。分類子タイプには、grok パターン、XMLタグ、JSONパスに基づくスキーマの定義が含まれます。
分類子の定義を変更すると、変更前の分類子を使用してクロールしたデータは再分類されません。クローラは、以前にクロールしたデータを追跡します。新しいデータは、更新された分類子で分類されるため、スキーマが更新される場合があります。データのスキーマが更新された場合は、クローラの実行時に分類子を更新してスキーマの変更を反映してください。データを再分類して不正な分類子を修正するには、更新された分類子を使用して新しいクローラを作成します。
AWS Glue でカスタム分類子を作成する方法については、「さまざまなデータ形式のカスタム分類子の記述」を参照してください。
注記
組み込み分類子のいずれかでデータ形式が認識される場合、カスタム分類子を作成する必要はありません。
組み込み分類子
AWS Glue は、、、JSONCSVウェブログ、および多くのデータベースシステムなど、さまざまな形式に対応する組み込みの分類子を提供します。
AWS Glue が入力データ形式に適したカスタム分類子を 100% の確実度で検出できない場合、次の表に示すような順番で組み込み分類子を呼び出します。組み込み分類子は、形式が一致するか (certainty=1.0
)、または一致しないか (certainty=0.0
) どうかを示す結果を返します。certainty=1.0
を持つ最初の分類子は、Data Catalog での分類文字列とメタデータテーブルのスキーマを提供します。
分類子タイプ | 分類文字列 | メモ |
---|---|---|
Apache Avro | avro |
ファイルの先頭からスキーマを読み取って形式を判断します。 |
Apache ORC | orc |
ファイルのメタデータを読み取って形式を判断します。 |
Apache Parquet | parquet |
ファイルの末尾からスキーマを読み取って形式を判断します。 |
JSON | json |
ファイルの先頭から読み取って形式を判断します。 |
バイナリ JSON | bson |
ファイルの先頭から読み取って形式を判断します。 |
XML | xml |
ファイルの先頭を読み取り、形式を決定します。 AWS Glue は、ドキュメント内のXMLタグに基づいてテーブルスキーマを決定します。 ドキュメント内の行を指定するカスタムXML分類子の作成については、「」を参照してくださいXML カスタム分類子の記述。 |
Amazon Ion | ion |
ファイルの先頭から読み取って形式を判断します。 |
Combined Apache ログ | combined_apache |
grok パターンを通じてログ形式を判断します。 |
Apache ログ | apache |
grok パターンを通じてログ形式を判断します。 |
Linux カーネルログ | linux_kernel |
grok パターンを通じてログ形式を判断します。 |
Microsoft ログ | microsoft_log |
grok パターンを通じてログ形式を判断します。 |
Ruby ログ | ruby_logger |
ファイルの先頭から読み取って形式を判断します。 |
Squid 3.x ログ | squid |
ファイルの先頭から読み取って形式を判断します。 |
Redis 監視ログ | redismonlog |
ファイルの先頭から読み取って形式を判断します。 |
Redis ログ | redislog |
ファイルの先頭から読み取って形式を判断します。 |
CSV | csv |
次の区切り記号をチェックします。カンマ (,)、パイプ (|)、タブ (\t)、セミコロン (;)、および Ctrl-A (\u0001)。Ctrl-A は Start Of
Heading の Unicode 制御文字です。 |
Amazon Redshift | redshift |
JDBC 接続を使用してメタデータをインポートします。 |
マイSQL | mysql |
JDBC 接続を使用してメタデータをインポートします。 |
PostgreSQL | postgresql |
JDBC 接続を使用してメタデータをインポートします。 |
Oracle データベース | oracle |
JDBC 接続を使用してメタデータをインポートします。 |
Microsoft SQL サーバー | sqlserver |
JDBC 接続を使用してメタデータをインポートします。 |
Amazon DynamoDB | dynamodb |
DynamoDB テーブルからデータを読み取ります。 |
以下の圧縮形式のファイルは分類できます。
-
ZIP (1 つのファイルのみを含むアーカイブでサポートされます)。Zip は他のサービスで十分にサポートされていないことに注意してください (アーカイブのため)。
-
BZIP
-
GZIP
-
LZ4
-
Snappy(標準および Hadoop ネイティブの両方の Snappy フォーマットでサポート)
組み込みCSV分類子
組み込みCSVの分類子は、CSVファイルの内容を解析してAWS Glueテーブルのスキーマを決定します。この分類子は以下の区切り記号を確認します。
カンマ (,)
パイプ (|)
タブ (\t)
セミコロン (;)
Ctrl-A (\u0001)
Ctrl-A は
Start Of Heading
の Unicode 制御文字です。
として分類するにはCSV、テーブルスキーマに少なくとも 2 つの列と 2 行のデータが必要です。CSV 分類子は、ヘッダーが特定のファイルに存在するかどうかを判断するために、いくつかのヒューリスティックを使用します。分類子で最初のデータ行にヘッダーを確認できない場合は、列のヘッダーが col1
、col2
、col3
のように表示されます。組み込みCSVの分類子は、 ファイルの次の特性を評価することで、ヘッダーを推測するかどうかを決定します。
潜在的なヘッダーのすべての列は、STRINGデータ型として解析されます。
最後の列を除き、ヘッダー候補の列ごとに 150 文字未満のコンテンツがあります。末尾の区切り記号を許可するには、ファイル全体で最後の列を空にすることができます。
ヘッダー候補の各列が、列名に関する AWS Glue
regex
要件を満たす必要があります。ヘッダー行は、データ行と十分に異なっている必要があります。これを決定するには、1 つ以上の行を STRING型以外のものとして解析する必要があります。すべての列がタイプ の場合STRING、データの最初の行は、ヘッダーとして使用する後続の行と十分に異なっていません。
注記
組み込みCSVの分類子がAWS Glueテーブルを必要なとおりに作成しない場合は、次のいずれかの代替方法を使用できます。
Data Catalog の列名を変更し、
SchemaChangePolicy
を に設定しLOG、将来のクローラー実行InheritFromTable
のためにパーティション出力設定を に設定します。データを分類するためのカスタム grok 分類子を作成し、必要な列を割り当てます。
組み込みCSVの分類子は、シリアル化ライブラリ
LazySimpleSerDe
として を参照するテーブルを作成します。これは、型推論に適しています。ただし、CSVデータに引用符で囲まれた文字列が含まれている場合は、テーブル定義を編集し、 SerDe ライブラリを に変更しますOpenCSVSerDe
。将来のクローラー実行InheritFromTable
のためにSTRING、推定されたタイプを に調整し、SchemaChangePolicy
を に設定しLOG、パーティション出力設定を に設定します。 SerDe ライブラリの詳細については、Amazon Athena ユーザーガイド」のSerDe 「リファレンス」を参照してください。