クローラーによる既存のスキーマの変更を防止する
実行時に、AWS Glue クローラー が Data Catalog に対してスキーマの変更を行わないようにすることができます。デフォルトでは、クローラーは Data Catalog 内のスキーマを更新して、クロールするデータソースと一致させます。ただし、特にデータを変換またはクリーンアップし、元のスキーマに変更を上書きしない場合は、クローラーが既存のスキーマを変更できないようにする必要があります。
テーブル定義の既存のスキーマを上書きしないようにクローラーを設定するには、次の手順に従います。
- AWS Management Console
-
-
AWS Management Consoleにサインインし、AWS Glue コンソール (https://console.aws.amazon.com/glue/
) を開きます。 -
[Data Catalog] で [クローラー] を選択します。
-
リストからクローラーを選択したら、[編集] を選択します。
-
[ステップ 4: 出力とスケジュールを設定する] を選択します。
-
[詳細オプション] で、[新しい列のみを追加] または [変更を無視し、Data Catalog のテーブルを更新しない] を選択します。
-
すべての新規パーティションと既存パーティションをテーブルのメタデータで更新するように設定オプションを設定できます。この設定により、パーティションスキーマがテーブルから継承されます。
[Update] (更新) を選択します。
-
- AWS CLI
-
次の例は、既存のスキーマを変更せず、新しい列のみを追加するようにクローラーを設定する方法を示しています。
aws glue update-crawler \ --name myCrawler \ --configuration '{"Version": 1.0, "CrawlerOutput": {"Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
次の例は、既存のスキーマを変更せず、新しい列を追加しないようにクローラーを設定する方法を示しています。
aws glue update-crawler \ --name myCrawler \ --schema-change-policy UpdateBehavior=LOG \ --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }}}'
- API
-
クローラーの実行時にテーブルスキーマを一切変更しない場合は、スキーマ変更ポリシーを
LOG
に設定します。API を使用してクローラーを設定する場合は、以下のパラメータを設定します。
SchemaChangePolicy
構造のUpdateBehavior
フィールドをLOG
に設定します。クローラー API で次の JSON オブジェクトの文字列表現を使用して
Configuration
フィールドを設定します。{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" } } }