Menyesuaikan perilaku crawler - AWS Glue

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menyesuaikan perilaku crawler

Saat sebuah crawler berjalan, crawler tersebut mungkin mengalami perubahan pada penyimpanan data Anda yang menghasilkan sebuah skema atau partisi yang berbeda dari perayapan sebelumnya. Anda dapat menggunakan AWS Management Console atau AWS Glue API untuk mengonfigurasi cara crawler memproses jenis perubahan tertentu.

Console

Bila Anda menentukan sebuah crawler menggunakan konsol AWS Glue, Anda memiliki beberapa pilihan untuk mengkonfigurasi perilaku crawler Anda. Untuk informasi tentang cara menggunakan konsol AWS Glue untuk menambahkan sebuah crawler, lihat Mengkonfigurasi crawler.

Ketika sebuah crawler berjalan terhadap penyimpanan data yang di-crawl sebelumnya, mungkin ia menemukan bahwa skema telah berubah atau bahwa beberapa objek dalam penyimpanan data telah dihapus. Crawler tersebut mencatat log perubahan skema. Tergantung pada jenis sumber crawler, tabel dan partisi baru dapat dibuat terlepas dari kebijakan perubahan skemanya.

Untuk menentukan apa yang dilakukan crawler ketika crawler tersebut menemukan perubahan dalam skema, Anda dapat memilih salah satu tindakan berikut pada konsol:

  • Memperbarui definisi tabel dalam Katalog Data — Menambahkan kolom baru, menghapus kolom yang hilang, dan mengubah definisi kolom yang ada di AWS Glue Data Catalog. Menghapus metadata yang tidak diatur oleh crawler tersebut. Ini adalah pengaturan default.

  • Menambahkan kolom baru saja — Untuk tabel yang memetakan ke penyimpanan data Amazon S3, menambahkan kolom baru seperti yang ditemukan, tetapi tidak menghapus atau mengubah jenis kolom yang ada di Katalog Data. Pilih opsi ini bila kolom saat ini dalam Katalog Data benar dan Anda tidak ingin crawler menghapus atau mengubah jenis kolom yang ada. Jika atribut tabel Amazon S3 mendasar berubah, seperti klasifikasi, jenis kompresi, atau CSV pembatas, tandai tabel sebagai tidak lagi digunakan. Mempertahankan format input dan format output seperti yang ada dalam Katalog Data. Perbarui SerDe parameter hanya jika parameternya adalah salah satu yang diatur oleh crawler. Untuk semua penyimpanan data lainnya, ubah definisi kolom yang ada.

  • Mengabaikan perubahan dan tidak memperbarui tabel di Katalog Data — Hanya tabel dan partisi baru dibuat.

    Ini adalah pengaturan default untuk perayapan tambahan.

Sebuah crawler juga dapat menemukan partisi baru atau yang diubah. Secara default, partisi baru ditambahkan dan partisi yang ada diperbarui jika mereka berubah. Selain itu, Anda dapat mengatur opsi konfigurasi crawler menjadi Perbarui semua partisi baru dan yang sudah ada dengan metadata dari tabel pada konsol AWS Glue. Ketika opsi ini disetel, partisi mewarisi properti metadata—seperti klasifikasi, format input, format keluaran, informasi, dan skema—dari tabel induknya. SerDe Setiap perubahan pada properti ini dalam sebuah tabel disebarkan ke partisi-partisinya. Bila opsi konfigurasi ini diatur pada crawler yang ada, maka partisi yang ada akan diperbarui untuk mencocokkan properti tabel induk saat eksekusi crawler berikutnya.

Untuk menentukan apa yang dilakukan crawler saat menemukan sebuah objek yang dihapus dalam penyimpanan data, pilih salah satu tindakan berikut:

  • Hapus tabel dan partisi dari Katalog Data

  • Abaikan perubahan dan jangan perbarui tabel di Katalog Data

    Ini adalah pengaturan default untuk perayapan tambahan.

  • Tandai tabel sebagai tidak lagi digunakan dalam Katalog Data — Ini adalah pengaturan default.

AWS CLI
aws glue create-crawler \ --name "your-crawler-name" \ --role "your-iam-role-arn" \ --database-name "your-database-name" \ --targets 'S3Targets=[{Path="s3://your-bucket-name/path-to-data"}]' \ --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": {"AddOrUpdateBehavior": "InheritFromTable"}, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
API

Saat Anda menentukan crawler menggunakan AWS Glue API, Anda dapat memilih dari beberapa bidang untuk mengonfigurasi crawler Anda. SchemaChangePolicy di API crawler menentukan apa yang dilakukan crawler saat menemukan terjadinya perubahan skema atau objek yang dihapus. Crawler mencatat skema perubahan saat berjalan.

Contoh kode python yang menunjukkan opsi konfigurasi crawler

import boto3 import json # Initialize a boto3 client for AWS Glue glue_client = boto3.client('glue', region_name='us-east-1') # Replace 'us-east-1' with your desired AWS region # Define the crawler configuration crawler_configuration = { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } } configuration_json = json.dumps(crawler_configuration) # Create the crawler with the specified configuration response = glue_client.create_crawler( Name='your-crawler-name', # Replace with your desired crawler name Role='crawler-test-role', # Replace with the ARN of your IAM role for Glue DatabaseName='default', # Replace with your target Glue database name Targets={ 'S3Targets': [ { 'Path': "s3://your-bucket-name/path/", # Replace with your S3 path to the data }, ], # Include other target types like 'JdbcTargets' if needed }, Configuration=configuration_json, # Include other parameters like Schedule, Classifiers, TablePrefix, SchemaChangePolicy, etc., as needed ) print(response)a

Ketika sebuah crawler berjalan, tabel baru dan partisi selalu dibuat terlepas dari kebijakan perubahan skema. Anda dapat memilih salah satu tindakan berikut di bidang UpdateBehavior dalam struktur SchemaChangePolicy untuk menentukan apa yang harus dilakukan crawler tidak ketika crawler tersebut menemukan skema tabel yang berubah:

  • UPDATE_IN_DATABASE — Memperbarui tabel di AWS Glue Data Catalog. Menambahkan kolom baru, menghapus kolom yang hilang, dan mengubah definisi kolom yang sudah ada. Menghapus metadata yang tidak diatur oleh crawler tersebut.

  • LOG — Mengabaikan perubahan, dan tidak memperbarui tabel di Katalog Data.

    Ini adalah pengaturan default untuk perayapan tambahan.

Anda juga dapat mengganti struktur SchemaChangePolicy menggunakan sebuah objek JSON yang disediakan dalam bidang Configuration API crawler. Objek JSON ini dapat berisi pasangan nilai kunci untuk mengatur kebijakan untuk tidak memperbarui kolom yang ada dan hanya menambahkan kolom baru. Sebagai contoh, berikan objek JSON berikut sebagai string:

{ "Version": 1.0, "CrawlerOutput": { "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } }

Opsi ini sesuai dengan opsi Tambahkan kolom baru saja pada konsol AWS Glue. Ia menggantikan struktur SchemaChangePolicy untuk tabel yang dihasilkan dari perayapan penyimpanan data Amazon S3 saja. Pilih opsi ini jika Anda ingin mempertahankan metadata yang ada di Katalog Data (sumber kebenaran). Kolom baru ditambahkan saat mereka ditemui, termasuk tipe data bersarang. Tapi kolom yang ada tidak dihapus, dan jenisnya tidak berubah. Jika atribut tabel Amazon S3 berubah secara signifikan, tandai tabel sebagai tidak lagi digunakan, dan mencatat log peringatan bahwa atribut yang tidak kompatibel perlu diubah. Opsi ini tidak berlaku untuk crawler inkremental.

Ketika sebuah crawler berjalan terhadap penyimpanan data yang di-crawl sebelumnya, crawler mungkin menemukan partisi baru atau partisi yang diubah. Secara default, partisi baru ditambahkan dan partisi yang ada diperbarui jika mereka berubah. Selain itu, Anda dapat mengatur opsi konfigurasi crawler ke InheritFromTable (sesuai dengan opsi Perbarui semua partisi baru dan yang sudah ada dengan metadata dari tabel pada konsol AWS Glue). Ketika opsi ini diatur, partisi mewarisi properti metadata dari tabel induknya, seperti klasifikasi, format input, format output, SerDe informasi, dan skema. Setiap perubahan properti pada tabel induk disebarkan ke partisi-partisinya.

Bila opsi konfigurasi ini diatur pada crawler yang ada, maka partisi yang ada akan diperbarui untuk mencocokkan properti tabel induk saat eksekusi crawler berikutnya. Perilaku ini diatur di bidang Configuration API crawler. Sebagai contoh, berikan objek JSON berikut sebagai string:

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" } } }

Bidang Configuration API crawler dapat mengatur beberapa pilihan konfigurasi. Sebagai contoh, untuk mengkonfigurasi output crawler baik untuk partisi ataupun tabel, Anda dapat memberikan sebuah representasi string dari objek JSON berikut:

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" } } }

Anda dapat memilih salah satu tindakan berikut untuk menentukan apa yang dilakukan crawler saat menemukan objek yang dihapus dalam penyimpanan data. Bidang DeleteBehavior dalam struktur SchemaChangePolicy di API crawler menetapkan perilaku crawler ketika crawler menemukan objek yang dihapus.

  • DELETE_FROM_DATABASE — Menghapus tabel dan partisi dari Katalog Data.

  • LOG — Mengabaikan perubahannya. Jangan memperbarui Katalog Data. Tulis pesan log sebagai gantinya.

  • DEPRECATE_IN_DATABASE — Tandai tabel sebagai tidak lagi digunakan dalam Katalog Data. Ini adalah pengaturan default.