分類子の定義と管理 - AWS Glue

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

分類子の定義と管理

分類子はデータをデータストアに読み取ります。データの形式を認識すると、スキーマが生成されます。分類子も、形式の認識がどれほど確実かを示す確信度数を返します。

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 分類子は、ヘッダーが特定のファイルに存在するかどうかを判断するために、いくつかのヒューリスティックを使用します。分類子で最初のデータ行にヘッダーを確認できない場合は、列のヘッダーが col1col2col3 のように表示されます。組み込み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 「リファレンス」を参照してください。