ステップ 2: データソースと分類子を選択する
次に、クローラーのデータソースと分類子を設定します。
サポートされるデータソースについては、「クロールでサポートされているデータソース」を参照してください。
- データソースの設定
-
に適切なオプションを選択します。データは既にマッピングされていますか。AWS Glue テーブル? 「まだ」または「はい」を選択します。デフォルトでは、「未実施」が選択されています。
クローラーは、クロールのソースとして直接データストアにアクセスでき、また既存のデータカタログのテーブルをソースとして使用することもできます。クローラーが既存のカタログテーブルを使用する場合、それらのカタログのテーブルで指定されたデータストアをクロールします。
[Not yet] (未実施): クローリングする 1 つまたは複数のデータソースを選択します。クローラーは、さまざまなタイプの複数のデータストア (Amazon S3、 JDBCなど) をクロールできます。
一度に設定できるデータストアは 1 つだけです。接続情報とインクルードパスと除外パターンを指定すると、別のデータストアを追加することもできます。
はい: から既存のテーブルを選択します。AWS Glue データカタログ。カタログテーブルは、クロールするデータストアを指定します。クローラーは 1 回の実行でのカタログテーブルのみをクロールできます。他のソースタイプを混在させることはできません。
ソースとしてカタログテーブルを指定する一般的な理由は、(データストアの構造をすでに知っていたため) テーブルを手動で作成した場合に、新しいパーティションの追加を含め、クローラーにテーブルを更新された状態に保持させるためです。他の理由の説明については、「クローラーを使用して手動で作成されたデータカタログテーブルを更新する」を参照してください。
既存のテーブルをクローラーソースのタイプとして指定する場合は、次の条件が適用されます。
-
データベース名はオプションです。
-
Amazon S3、Amazon DynamoDB、または Delta Lake データストアを指定するカタログテーブルのみが使用できます。
-
クローラーが実行されるとき、新しいカタログテーブルは作成されません。既存のテーブルは、新しいパーティションの追加を含め、必要に応じて更新されます。
-
データストアで見つかる削除されたオブジェクトは無視されます。カタログテーブルが削除されません。代わりに、クローラーによりログメッセージが書き込まれます(
SchemaChangePolicy.DeleteBehavior=LOG
) -
Amazon S3 パスごとに単一のスキーマを作成するクローラー設定オプションはデフォルトで有効になっており、無効にすることはできません。(
TableGroupingPolicy
=CombineCompatibleSchemas
) 詳しくは、「各 Amazon S3 インクルードパスの単一のスキーマを作成する」を参照してください。 -
カタログテーブルをソースとして他のソースタイプ (例: Amazon S3 または Amazon DynamoDB) と混在させることはできません。
-
Delta テーブルを使用するには、まず Athena DDLまたは を使用して Delta テーブルを作成します AWS Glue API。
Athena を使用して、場所を Amazon S3 フォルダに設定し、テーブルタイプを 'DELTA' に設定します。
CREATE EXTERNAL TABLE database_name.table_name LOCATION 's3://bucket/folder/' TBLPROPERTIES ('table_type' = 'DELTA')
を使用して AWS Glue API、テーブルパラメータマップ内でテーブルタイプを指定します。テーブルパラメータには、次のキーおよび値のペアを含める必要があります。テーブルを作成する方法の詳細については、「create_table の Boto3 ドキュメント
」を参照してください。 { "table_type":"delta" }
- データソース
-
クローラーでスキャンするデータソースのリストを選択または追加します。
(オプション) データソースJDBCとして を選択した場合は、JDBCドライバー情報が保存されている接続アクセスを指定するときに、独自のドライバーを使用できます。
- インクルードパス
-
クロールで何を含め、何を除外するかを評価する際、クローラーは必要なインクルードパスを評価することから始めます。Amazon S3、MongoDB、MongoDB Atlas、Amazon DocumentDB (MongoDB 互換)、リレーショナルデータストアの場合は、インクルードパスを指定する必要があります。
- Amazon S3 データストアの場合
-
このアカウントのパスを指定するか、別のアカウントのパスを指定するかを選択し、Amazon S3 パスを参照して選択します。
Amazon S3 データストアの場合、インクルードパスの構文は
bucket-name/folder-name/file-name.ext
です。バケット内のすべてのオブジェクトをクロールするには、インクルードパスにバケット名のみ指定します。除外パターンは、インクルードパスを基準とする相対パスです。 - Delta Lake データストアの場合
-
Delta テーブルへの 1 つ以上の Amazon S3 パスを s3://
bucket
/prefix
/object
. - Iceberg または Hudi データストアの場合
-
Iceberg または Hudi テーブルメタデータが s3:// のフォルダを含む 1 つ以上の Amazon S3 パスを指定します。
bucket
/prefix
.Iceberg および Hudi データストアの場合、Iceberg/Hudi フォルダはルートフォルダの子フォルダにある場合があります。クローラーは、Hudi フォルダのパス以下にあるすべてのフォルダをスキャンします。
- JDBC データストアの場合
-
Enter
<database>
/<schema>
/<table>
または<database>
/<table>
データベース製品に応じて、。Oracle Database と MySQL は、パスでスキーマをサポートしていません。パーセント (%) 文字を に置き換えることができます。<schema>
または<table>
。 例えば、システム識別子 (SID) が の Oracle データベースの場合orcl
、orcl/%
を入力して、接続で という名前のユーザーがアクセスできるすべてのテーブルをインポートします。重要
このフィールドでは、大文字と小文字が区別されます。
注記
独自のJDBCドライバーバージョンを導入する場合は、AWS Glue クローラーは でリソースを消費します AWS Glue と Amazon S3 バケットを に割り当てて、提供されたドライバーが環境で実行されていることを確認します。リソースの追加使用量はアカウントに反映されます。ドライバーは、 AWS Glue 接続。
- MongoDB、MongoDB Atlas、Amazon DocumentDB データストアの場合
-
MongoDB、MongoDB Atlas、Amazon DocumentDB (MongoDB 互換) の場合、構文は
database/collection
です。
JDBC データストアの場合、構文は
database-name/schema-name/table-name
または ですdatabase-name/table-name
。構文は、データベースエンジンでデータベース内のスキーマがサポートされているかどうかに依存します。例えば、MySQL や Oracle などのデータベースエンジンの場合、インクルードパスschema-name
に を指定しないでください。インクルードパスでスキーマやテーブルの代わりにパーセント記号 (%
) を使用することで、データベース内のすべてのスキーマやテーブルを表すことができます。インクルードパスでデータベースの代わりにパーセント記号 (%
) を使用することはできません。 - 最大トラバーサル深度 (Iceberg または Hudi データストアのみ)
-
クローラーが Amazon S3 パス内の Iceberg または Hudi メタデータフォルダを検出するために通過できる Amazon S3 パスの最大深度を定義します。このパラメータの目的は、クローラーの実行時間を制限することです。デフォルト値は 10 で、最大値は 20 です。
- 除外パターン
-
この機能を利用すると、特定のファイルまたはテーブルをクロールから除外できます。エクスクルードパスは、インクルードパスを基準とする相対パスです。たとえば、JDBCデータストア内のテーブルを除外するには、除外パスにテーブル名を入力します。
クローラーは、 を使用してJDBCデータストアに接続します。AWS Glue 接続文字列を含むJDBCURI接続。クローラーは、 のJDBCユーザー名とパスワードを使用してデータベースエンジン内のオブジェクトにのみアクセスできます。AWS Glue 接続。クローラーは、JDBC接続を介してアクセスできるテーブルのみを作成できます。クローラーが を使用してデータベースエンジンにアクセスするとJDBCURI、インクルードパスを使用して、データベースエンジン内のどのテーブルがデータカタログに作成されるかを決定します。例えば、My ではSQL、 の包含パスを指定すると
MyDatabase/%
、 内のすべてのテーブルMyDatabase
がデータカタログに作成されます。Amazon Redshift にアクセスする場合、MyDatabase/%
というインクルードパスを指定すると、データベースMyDatabase
の各スキーマ内のすべてのテーブルがデータカタログで作成されます。MyDatabase/MySchema/%
のインクルードパスを指定すると、データベースMyDatabase
のすべてのテーブルとスキーマMySchema
が作成されます。インクルードパスの指定後に、1 つ以上の Unix 形式の
glob
除外パターンを指定することで、インクルードパスに含まれる予定であったオブジェクトをクロールから除外できます。これらのパターンはインクルードパスに適用されて、どのオブジェクトを除外するか決定します。また、これらのパターンはクローラによって作成されるテーブルのプロパティとして保存されます。AWS Glue PySpark などの拡張機能はcreate_dynamic_frame.from_catalog
、テーブルプロパティを読み取って、除外パターンで定義されたオブジェクトを除外します。AWS Glue は、除外
glob
パターンで次のパターンをサポートします。除外パターン 説明 *.csv
.csv
で終わる現在のフォルダ内のオブジェクト名を表す Amazon S3 パスと一致する*.*
ドットを含むオブジェクト名すべてと一致する *.{csv,avro}
.csv
か.avro
で終わるオブジェクト名と一致するfoo.?
foo.
で始まり、その後に 1 文字の拡張子が続くオブジェクト名と一致するmyfolder/*
/myfolder/mysource
など、myfolder
のサブフォルダの 1 つのレベルにあるオブジェクトと一致するmyfolder/*/*
/myfolder/mysource/data
など、myfolder
のサブフォルダの 2 つのレベルにあるオブジェクトと一致するmyfolder/**
myfolder
のすべてのサブフォルダにあるオブジェクト (/myfolder/mysource/mydata
や/myfolder/mysource/data
など) と一致するmyfolder**
/myfolder
や/myfolder/mydata.txt
などのmyfolder
以下のファイルと同様に、サブフォルダmyfolder
と一致するMarket*
JDBC データベース内のテーブルを Market
、Market_us
や などの で始まる名前と照合します。Market_fr
AWS Glue は次のように
glob
除外パターンを解釈します。-
スラッシュ (
/
) 文字は、Amazon S3 キーをフォルダ階層に区切る区切り記号です。 -
アスタリスク (
*
) 記号は、フォルダの境界を超えない、0 文字以上の名前の要素と一致します。 -
二重アスタリスク (
**
) は、フォルダやスキーマの境界を越える 0 個以上の文字に相当します。 -
疑問符 (
?
) 記号は、名前の要素のちょうど 1 文字に相当します。 -
バックスラッシュ (
\
) 文字は、本来ならば特殊文字として解釈される文字をエスケープ処理するために使用されます。\\
式はバックスラッシュ 1 つに相当し、\{
は左括弧に相当します。 -
角括弧 (
[ ]
) は、一連の文字の中から、名前の要素の 1 文字に相当する角括弧式を作成します。たとえば、[abc]
はa
、b
、またはc
に一致します。ハイフン (-
) は、範囲を指定するために使用されます。つまり、[a-z]
はa
からz
(この値を含みます) までに相当する範囲を指定します。これらのフォームは組み合わせることができます。そのため、[abce-g
] はa
、b
、c
、e
、f
、またはg
に一致します。角括弧 ([
) の後の文字が感嘆符 (!
) の場合、角括弧式は否定の意味になります。たとえば、[!a-c]
はa
、b
、またはc
以外のすべての文字に一致します。角括弧式内では、
*
、?
、および\
文字は、文字通りの意味です。ハイフン (-
) 文字は、角括弧内で最初の文字だった場合、または式を否定する!
の次の文字だった場合は、文字通りの意味です。 -
中括弧 (
{ }
) は、グループ内のサブパターンが一致する場合にグループが一致するサブパターンのグループを囲みます。カンマ (,
) 文字は、サブパターンを分割するために使用されます。グループはネストできません。 -
ファイル名の先頭のピリオドまたはドット文字は、マッチ操作では通常の文字として扱われます。たとえば、
*
除外パターンは、ファイル名.hidden
に一致します。
例 Amazon S3 除外パターンの例
各除外パターンは、インクルードパスに対して評価されます。例えば、次の Amazon S3 ディレクトリ構造があるとします。
/mybucket/myfolder/ departments/ finance.json market-us.json market-emea.json market-ap.json employees/ hr.json john.csv jane.csv juan.txt
インクルードパスが
s3://mybucket/myfolder/
の場合、以下は除外パターンのサンプル結果の一部です。除外パターン 結果 departments/**
departments
フォルダ内のすべてのファイルとフォルダを除外し、employees
フォルダとそのファイルを含めます。departments/market*
market-us.json
、market-emea.json
、およびmarket-ap.json
を除外します**.csv
名前が .csv
で終わるmyfolder
以下のすべてのオブジェクトを除外しますemployees/*.csv
employees
フォルダ内のすべての.csv
ファイルを除外します。例 Amazon S3 パーティションのサブセットの除外の例
データが日別に分割されていて、1 年の日別に異なる Amazon S3 パーティションに入っているとします。2015 年 1 月には、31 のパーティションがあります。ここで、1 月の第 1 週のみのデータをクロールするには、1 日〜7 日を除くすべてのパーティションを除外する必要があります。
2015/01/{[!0],0[8-9]}**, 2015/0[2-9]/**, 2015/1[0-2]/**
この glob パターンの各パートを見てみます。最初のパートは
2015/01/{[!0],0[8-9]}**
で、"0" で始まらないすべての日付、および 2015 年 01 月の 08 日目および 09 日目を除外しています。"**" を日数パターンのサフィックスとして使用すると、下位レベルフォルダへのフォルダ境界を越えることに注意してください。"*" を使用すると、下位レベルフォルダは除外されます。2 番目のパートは
2015/0[2-9]/**
で、2015 年 02 から 09 月までの日を除外します。3 番目のパートは
2015/1[0-2]/**
で、2015 年 10、11、12 月の日を除外します。例 JDBC パターンを除外する
次のスキーマ構造でJDBCデータベースをクロールするとします。
MyDatabase/MySchema/ HR_us HR_fr Employees_Table Finance Market_US_Table Market_EMEA_Table Market_AP_Table
インクルードパスが
MyDatabase/MySchema/%
の場合、以下は除外パターンのサンプル結果の一部です。除外パターン 結果 HR*
HR
で始まる名前を持つテーブルを除外Market_*
Market_
で始まる名前を持つテーブルを除外**_Table
_Table
で終わる名前を持つテーブルをすべて除外 -
- 追加のクローラーソースパラメータ
-
各ソースのタイプには、異なる追加パラメータのセットが必要です。
- 接続
-
を選択または追加する AWS Glue 接続。接続の詳細については、「データへの接続」を参照してください
- 追加メタデータ - オプション (JDBCデータストアの場合)
-
クローラーがクローリングするための追加のメタデータプロパティを選択します。
[Comments] (コメント): 関連するテーブルレベルと列レベルのコメントをクローリングします。
[Raw types] (未加工型): 表の列の未加工のデータ型を追加のメタデータに保持します。デフォルトの動作として、クローラーは未処理のデータ型を Hive 互換の型に変換します。
- JDBC ドライバークラス名 - オプション (JDBCデータストアの場合)
-
データソースに接続するクローラーのカスタムJDBCドライバークラス名を入力します。
Postgres: org.postgresql.Driver
マイ SQL: com.mysql.jdbc.Driver、com.mysql.cj.jdbc.Driver
Redshift: com.amazon.redshift.jdbc.Driver、com.amazon.redshift.jdbc42.Driver
Oracle: oracle.jdbc.driver。OracleDriver
SQL サーバー: com.microsoft.sqlserver.jdbc。SQLServerDriver
- JDBC ドライバー S3 パス - オプション (JDBCデータストア用)
-
.jar
ファイルへの既存の Amazon S3 パスを選択します。これは、クローラーがデータソースに接続するためにカスタムJDBCドライバーを使用する場合に.jar
ファイルを保存する場所です。 - データサンプリングを有効にする (Amazon DynamoDB、MongoDB、MongoDB Atlas、Amazon DocumentDB データストアのみ)
-
データサンプルのみをクロールするかどうかを選択します。選択しない場合は、テーブル全体がクロールされます。テーブルが高スループットテーブルではない場合、すべてのレコードのスキャンには時間がかかることがあります。
- クエリ用のテーブルを作成する (Delta Lake データストア用のみ)
-
Delta Lake テーブルの作成方法を次の中から選択します。
[Create Native tables] (ネイティブテーブルの作成): Delta トランザクションログの直接クエリをサポートするクエリエンジンとの統合を可能にします。
[Create Symlink tables] (Symlink テーブルの作成): 指定された設定パラメータに基づいて、マニフェストファイルを分割キーで分割して Symlink マニフェストを作成します。
- スキャンレート - オプション (DynamoDB データストア用のみ)
-
クローラーで使用する DynamoDB テーブル読み取りキャパシティーユニットの割合を指定します。読み取りキャパシティーユニットは、DynamoDB で定義されている用語で、テーブルに対して実行できる読み取り回数/秒のレート制限として機能する数値です。0.1~1.5 の値を入力します。指定しない場合、プロビジョニングされたテーブルの場合は 0.5、オンデマンドテーブルの場合は最大の設定済みキャパシティーの 1/4 にデフォルト設定されます。 AWS Glue クローラーでは、プロビジョニングされたキャパシティモードのみを使用する必要があることに注意してください。
注記
DynamoDB データストアの場合、テーブルの読み取りと書き込みを処理するプロビジョニング容量モードを設定します。 AWS Glue クローラーは、オンデマンドキャパシティモードでは使用しないでください。
- ネットワーク接続 - オプション (Amazon S3、Delta、Iceberg、Hudi、および Catalog ターゲットデータストア用)
-
必要に応じて、この Amazon S3 ターゲットで使用するネットワーク接続を含めます。各クローラーは 1 つのネットワーク接続に制限されているため、他の Amazon S3 ターゲットも同じ接続を使用します (空欄の場合は接続なし)。
接続の詳細については、「データへの接続」を参照してください
- ファイルのサブセットのみのサンプリングとサンプルサイズ (Amazon S3 データストア用のみ)
-
データセット内のサンプルファイルをクロールするときにクロールされる各リーフフォルダ内のファイル数を指定します。この機能をオンにすると、このデータセット内のすべてのファイルをクロールする代わりに、クローラーはクロールする各リーフフォルダ内の一部のファイルをランダムに選択します。
サンプリングするクローラーは、データ形式について事前に知識があり、フォルダ内のスキーマが変更されないことを知っているお客様に最適です。この機能をオンにすると、クローラーの実行時間が大幅に短縮されます。
有効な値は、1 から 249 までの整数です。指定しない場合、すべてのファイルがクロールされます。
- 以降のクローラー実行
-
このフィールドは、すべての Amazon S3 データソースに影響するグローバルフィールドです。
[Crawl all sub-folders] (すべてのサブフォルダをクローリング): 以降クローリングするたびに、すべてのフォルダを再度クローリングします。
[Crawl new sub-folders only] (新しいサブフォルダのみをクローリング): 最近のクローリング以降に追加された Amazon S3 フォルダのみをクローリングします スキーマに互換性がある場合、新しいパーティションが既存のテーブルに追加されます。詳細については、「新しいパーティションを追加するための増分クロールのスケジューリング」を参照してください。
[Crawl based on events] (イベントに基づいてクローリング): Amazon S3 イベントを利用して、クローリングするフォルダを制御します。詳細については、「Amazon S3 イベント通知を使用した加速クロール」を参照してください。
- カスタム分類子 - オプション
-
クローラーを定義する前にカスタム分類子を定義します。分類子は、指定されたファイルがクローラーで処理可能な形式であるかどうかをチェックします。処理可能な場合、分類子は、そのデータ形式と一致する
StructType
オブジェクトの形式でスキーマを作成します。詳細については、「分類子の定義と管理」を参照してください。