GlueContext kelas - AWS Glue

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

GlueContext kelas

Membungkus SparkContextobjek Apache Spark, dan dengan demikian menyediakan mekanisme untuk berinteraksi dengan platform Apache Spark.

__init__

__init__(sparkContext)
  • sparkContext — Konteks Apache Spark yang akan digunakan.

Membuat

getSource

getSource(connection_type, transformation_ctx = "", **options)

Membuat objek DataSource yang dapat digunakan untuk membaca DynamicFrames dari sumber eksternal.

  • connection_type — Jenis koneksi yang digunakan, seperti Amazon Simple Storage Service (Amazon S3), Amazon Redshift, dan JDBC. Nilai yang valid termasuk s3, mysql, postgresql, redshift, sqlserver, oracle, dan dynamodb.

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional).

  • options — Kumpulan pasangan nama-nilai opsional. Untuk informasi selengkapnya, lihat Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark.

Berikut adalah contoh penggunaan getSource.

>>> data_source = context.getSource("file", paths=["/in/path"]) >>> data_source.setFormat("json") >>> myFrame = data_source.getFrame()

create_dynamic_frame_from_rdd

create_dynamic_frame_from_rdd(data, name, schema=None, sample_ratio=None, transformation_ctx="")

Mengembalikan sebuah DynamicFrame yang dibuat dari Apache Spark Resilient Distributed Dataset (RDD).

  • data — Sumber data yang akan digunakan.

  • name — Nama data yang akan digunakan.

  • schema — Skema yang akan digunakan (opsional).

  • sample_ratio — Rasio sampel yang akan digunakan (opsional).

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional).

create_dynamic_frame_from_catalog

create_dynamic_frame_from_catalog(database, table_name, redshift_tmp_dir, transformation_ctx = "", push_down_predicate= "", additional_options = {}, catalog_id = None)

Mengembalikan sebuah DynamicFrame yang dibuat menggunakan basis data dan nama tabel Katalog Data. Saat menggunakan metode ini, Anda menyediakan format_options properti tabel pada tabel Katalog Data AWS Glue yang ditentukan dan opsi lain melalui additional_options argumen.

  • Database — Basis data tempat untuk membaca.

  • table_name — Nama tempat untuk dibaca.

  • redshift_tmp_dir — Sebuah direktori sementara Amazon Redshift yang akan digunakan (opsional).

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional).

  • push_down_predicate — Memfilter partisi tanpa harus mencantumkan dan membaca semua file dalam set data Anda. Untuk sumber dan batasan yang didukung, lihat Mengoptimalkan pembacaan dengan pushdown di Glue AWS ETL. Untuk informasi selengkapnya, lihat Pra-penyaringan menggunakan predikat pushdown.

  • additional_options — Kumpulan pasangan nama-nilai opsional. Opsi yang mungkin adalah opsi-opsi yang tercantum dalam Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark kecuali endpointUrl, streamName, bootstrap.servers, security.protocol, topicName, classification, dan delimiter. Opsi lain yang didukung adalahcatalogPartitionPredicate:

    catalogPartitionPredicate— Anda dapat meneruskan ekspresi katalog untuk memfilter berdasarkan kolom indeks. Ini mendorong penyaringan ke sisi server. Untuk informasi selengkapnya, lihat Indeks AWS Glue Partisi. Perhatikan itu push_down_predicate dan catalogPartitionPredicate gunakan sintaks yang berbeda. Yang pertama menggunakan sintaks standar Spark SQL dan yang kemudian menggunakan parser JSQL.

  • catalog_id — ID katalog (ID akun) dari Katalog Data yang sedang diakses. Bila Tidak Ada, maka ID akun default pemanggil yang akan digunakan.

create_dynamic_frame_from_options

create_dynamic_frame_from_options(connection_type, connection_options={}, format=None, format_options={}, transformation_ctx = "")

Mengembalikan sebuah DynamicFrame dibuat dengan koneksi dan format yang ditentukan.

  • connection_type — Jenis koneksi, seperti Amazon S3, Amazon Redshift, dan JDBC. Nilai yang valid termasuk s3, mysql, postgresql, redshift, sqlserver, oracle, dan dynamodb.

  • connection_options — Pilihan koneksi, seperti path dan tabel basis data (opsional). Untuk connection_type dari s3, daftar path Amazon S3 didefinisikan.

    connection_options = {"paths": ["s3://aws-glue-target/temp"]}

    Untuk koneksi JDBC, beberapa properti harus didefinisikan. Perhatikan bahwa nama basis data harus menjadi bagian dari URL. Secara opsional dapat disertakan dalam opsi koneksi.

    Awas

    Menyimpan kata sandi dalam skrip Anda tidak disarankan. Pertimbangkan boto3 untuk menggunakan untuk mengambilnya dari AWS Secrets Manager atau Katalog Data AWS Glue.

    connection_options = {"url": "jdbc-url/database", "user": "username", "password": passwordVariable,"dbtable": "table-name", "redshiftTmpDir": "s3-tempdir-path"}

    Properti dbtable adalah nama tabel JDBC. Untuk penyimpanan data JDBC yang mendukung skema dalam basis data, tentukan schema.table-name. Jika skema tidak disediakan, maka skema "publik" default digunakan.

    Untuk informasi selengkapnya, lihat Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark.

  • format— Sebuah spesifikasi format. Ini digunakan untuk Amazon S3 atau AWS Glue koneksi yang mendukung berbagai format. Lihat Opsi format data untuk input dan output untuk Spark AWS Glue untuk format yang didukung.

  • format_options — Pilihan format untuk format yang ditentukan. Lihat Opsi format data untuk input dan output untuk Spark AWS Glue untuk format yang didukung.

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional).

  • push_down_predicate — Memfilter partisi tanpa harus mencantumkan dan membaca semua file dalam set data Anda. Untuk sumber dan batasan yang didukung, lihat Mengoptimalkan pembacaan dengan pushdown di Glue AWS ETL. Untuk informasi selengkapnya, lihat Pra-Pemfilteran Menggunakan Predikat Pushdown.

create_sample_dynamic_frame_from_catalog

create_sample_dynamic_frame_from_catalog(database, table_name, num, redshift_tmp_dir, transformation_ctx = "", push_down_predicate= "", additional_options = {}, sample_options = {}, catalog_id = None)

Mengembalikan sampel DynamicFrame yang dibuat menggunakan database Data Catalog dan nama tabel. DynamicFrameSatu-satunya berisi num catatan pertama dari sumber data.

  • database — Basis data tempat untuk membaca.

  • table_name — Nama tempat untuk dibaca.

  • num— Jumlah maksimum catatan dalam bingkai dinamis sampel yang dikembalikan.

  • redshift_tmp_dir — Sebuah direktori sementara Amazon Redshift yang akan digunakan (opsional).

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional).

  • push_down_predicate — Memfilter partisi tanpa harus mencantumkan dan membaca semua file dalam set data Anda. Untuk informasi selengkapnya, lihat Pra-penyaringan menggunakan predikat pushdown.

  • additional_options — Kumpulan pasangan nama-nilai opsional. Opsi yang mungkin adalah opsi-opsi yang tercantum dalam Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark kecuali endpointUrl, streamName, bootstrap.servers, security.protocol, topicName, classification, dan delimiter.

  • sample_options— Parameter untuk mengontrol perilaku pengambilan sampel (opsional). Parameter yang tersedia saat ini untuk sumber Amazon S3:

    • maxSamplePartitions— Jumlah maksimum partisi yang akan dibaca oleh sampling. Nilai default adalah 10

    • maxSampleFilesPerPartition— Jumlah maksimum file sampling akan dibaca dalam satu partisi. Nilai default adalah 10.

      Parameter ini membantu mengurangi waktu yang dikonsumsi oleh daftar file. Misalnya, dataset memiliki 1000 partisi, dan setiap partisi memiliki 10 file. Jika Anda mengatur maxSamplePartitions = 10, dan maxSampleFilesPerPartition = 10, alih-alih mencantumkan semua 10.000 file, pengambilan sampel hanya akan mencantumkan dan membaca 10 partisi pertama dengan 10 file pertama di masing-masing: 10* 10 = 100 file secara total.

  • catalog_id — ID katalog Katalog Data yang sedang diakses (ID akun Katalog Data). Diatur ke None secara default. None default ke ID katalog dari akun yang melakukan panggilan dalam layanan.

create_sample_dynamic_frame_from_options

create_sample_dynamic_frame_from_options(connection_type, connection_options={}, num, sample_options={}, format=None, format_options={}, transformation_ctx = "")

Mengembalikan sampel DynamicFrame yang dibuat dengan koneksi dan format yang ditentukan. DynamicFrameSatu-satunya berisi num catatan pertama dari sumber data.

  • connection_type — Jenis koneksi, seperti Amazon S3, Amazon Redshift, dan JDBC. Nilai yang valid termasuk s3, mysql, postgresql, redshift, sqlserver, oracle, dan dynamodb.

  • connection_options — Pilihan koneksi, seperti path dan tabel basis data (opsional). Untuk informasi selengkapnya, lihat Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark.

  • num— Jumlah maksimum catatan dalam bingkai dinamis sampel yang dikembalikan.

  • sample_options— Parameter untuk mengontrol perilaku pengambilan sampel (opsional). Parameter yang tersedia saat ini untuk sumber Amazon S3:

    • maxSamplePartitions— Jumlah maksimum partisi yang akan dibaca oleh sampling. Nilai default adalah 10

    • maxSampleFilesPerPartition— Jumlah maksimum file sampling akan dibaca dalam satu partisi. Nilai default adalah 10.

      Parameter ini membantu mengurangi waktu yang dikonsumsi oleh daftar file. Misalnya, dataset memiliki 1000 partisi, dan setiap partisi memiliki 10 file. Jika Anda mengatur maxSamplePartitions = 10, dan maxSampleFilesPerPartition = 10, alih-alih mencantumkan semua 10.000 file, pengambilan sampel hanya akan mencantumkan dan membaca 10 partisi pertama dengan 10 file pertama di masing-masing: 10* 10 = 100 file secara total.

  • format— Sebuah spesifikasi format. Ini digunakan untuk Amazon S3 atau AWS Glue koneksi yang mendukung berbagai format. Lihat Opsi format data untuk input dan output untuk Spark AWS Glue untuk format yang didukung.

  • format_options — Pilihan format untuk format yang ditentukan. Lihat Opsi format data untuk input dan output untuk Spark AWS Glue untuk format yang didukung.

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional).

  • push_down_predicate — Memfilter partisi tanpa harus mencantumkan dan membaca semua file dalam set data Anda. Untuk informasi selengkapnya, lihat Pra-penyaringan menggunakan predikat pushdown.

add_ingestion_time_columns

add_ingestion_time_columns(dataFrame, timeGranularity = "")

Menambahkan kolom waktu penyerapan seperti ingest_year, ingest_month, ingest_day, ingest_hour, ingest_minute ke input DataFrame. Fungsi ini secara otomatis dihasilkan dalam skrip yang dihasilkan oleh AWS Glue saat Anda menentukan tabel Katalog Data dengan Amazon S3 sebagai target. Fungsi ini secara otomatis memperbarui partisi dengan kolom waktu penyerapan pada tabel output. Hal ini memungkinkan data output dipartisi secara otomatis pada waktu penyerapan tanpa memerlukan kolom waktu penyerapan eksplisit dalam data input.

  • dataFramedataFrame yang akan ditambahi dengan kolom waktu penyerapan.

  • timeGranularity — Kedetailan dari kolom waktu. Nilai yang benar adalah "day", "hour" dan "minute". Misalnya, jika "hour" diberikan dalam fungsi, maka dataFrame asli akan memiliki kolom waktu "ingest_year", "ingest_month", "ingest_day", dan "ingest_hour" yang ditambahkan.

Mengembalikan bingkai data setelah menambahkan kolom kedetailan waktu.

Contoh:

dynamic_frame = DynamicFrame.fromDF(glueContext.add_ingestion_time_columns(dataFrame, "hour"))

create_data_frame_from_catalog

create_data_frame_from_catalog(database, table_name, transformation_ctx = "", additional_options = {})

Mengembalikan sebuah DataFrame yang dibuat menggunakan informasi dari tabel Katalog Data.

  • database — Basis data Katalog Data tempat membaca.

  • table_name — Nama tabel Katalog Data tempat membaca.

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional).

  • additional_options — Kumpulan pasangan nama-nilai opsional. Opsi yang mungkin termasuk yang tercantum dalam Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark untuk sumber streaming, seperti startingPosition, maxFetchTimeInMs, dan startingOffsets.

    • useSparkDataSource— Ketika disetel ke true, memaksa AWS Glue untuk menggunakan Spark Data Source API asli untuk membaca tabel. Spark Data Source API mendukung format berikut: AVRO, biner, CSV, JSON, ORC, Parket, dan teks. Dalam tabel Katalog Data, Anda menentukan format menggunakan classification properti. Untuk mempelajari lebih lanjut tentang Spark Data Source API, lihat dokumentasi resmi Apache Spark.

      Menggunakan create_data_frame_from_catalog dengan useSparkDataSource memiliki manfaat sebagai berikut:

      • Langsung mengembalikan a DataFrame dan memberikan alternatif untukcreate_dynamic_frame.from_catalog().toDF().

      • Mendukung kontrol AWS Lake Formation izin tingkat tabel untuk format asli.

      • Mendukung membaca format danau data tanpa AWS Lake Formation kontrol izin tingkat tabel. Untuk informasi selengkapnya, lihat Menggunakan kerangka kerja data lake dengan pekerjaan AWS Glue ETL.

      Saat Anda mengaktifkanuseSparkDataSource, Anda juga dapat menambahkan salah satu opsi Sumber Data Spark sesuai additional_options kebutuhan. AWS Glue meneruskan opsi ini langsung ke pembaca Spark.

    • useCatalogSchema— Ketika disetel ke true, AWS Glue menerapkan skema Data Catalog ke hasilDataFrame. Jika tidak, pembaca menyimpulkan skema dari data. Ketika Anda mengaktifkanuseCatalogSchema, Anda juga harus mengatur useSparkDataSource ke true.

Batasan

Pertimbangkan batasan berikut saat Anda menggunakan useSparkDataSource opsi:

  • Saat Anda menggunakanuseSparkDataSource, AWS Glue membuat yang baru DataFrame dalam sesi Spark terpisah yang berbeda dari sesi Spark asli.

  • DataFrame Pemfilteran partisi percikan tidak berfungsi dengan fitur AWS Glue berikut.

    Untuk menggunakan penyaringan partisi dengan fitur-fitur ini, Anda dapat menggunakan predikat AWS pushdown Glue. Untuk informasi selengkapnya, lihat Pra-penyaringan menggunakan predikat pushdown. Pemfilteran pada kolom yang tidak dipartisi tidak terpengaruh.

    Contoh skrip berikut menunjukkan cara yang salah untuk melakukan pemfilteran partisi dengan opsi. excludeStorageClasses

    // Incorrect partition filtering using Spark filter with excludeStorageClasses read_df = glueContext.create_data_frame.from_catalog( database=database_name, table_name=table_name, additional_options = { "useSparkDataSource": True, "excludeStorageClasses" : ["GLACIER", "DEEP_ARCHIVE"] } ) // Suppose year and month are partition keys. // Filtering on year and month won't work, the filtered_df will still // contain data with other year/month values. filtered_df = read_df.filter("year == '2017 and month == '04' and 'state == 'CA'")

    Contoh skrip berikut menunjukkan cara yang benar untuk menggunakan predikat pushdown untuk melakukan pemfilteran partisi dengan opsi. excludeStorageClasses

    // Correct partition filtering using the AWS Glue pushdown predicate // with excludeStorageClasses read_df = glueContext.create_data_frame.from_catalog( database=database_name, table_name=table_name, // Use AWS Glue pushdown predicate to perform partition filtering push_down_predicate = "(year=='2017' and month=='04')" additional_options = { "useSparkDataSource": True, "excludeStorageClasses" : ["GLACIER", "DEEP_ARCHIVE"] } ) // Use Spark filter only on non-partitioned columns filtered_df = read_df.filter("state == 'CA'")

Contoh: Membuat tabel CSV menggunakan pembaca sumber data Spark

// Read a CSV table with '\t' as separator read_df = glueContext.create_data_frame.from_catalog( database=<database_name>, table_name=<table_name>, additional_options = {"useSparkDataSource": True, "sep": '\t'} )

create_data_frame_from_options

create_data_frame_from_options(connection_type, connection_options={}, format=None, format_options={}, transformation_ctx = "")

API ini sekarang sudah usang. Sebagai gantinya gunakan getSource() API. Mengembalikan sebuah DataFrame dibuat dengan koneksi dan format yang ditentukan. Gunakan fungsi ini hanya dengan sumber AWS Glue streaming.

  • connection_type — Jenis koneksi streaming. Nilai yang valid mencakup kinesis dan kafka.

  • connection_options — Pilihan koneksi, yang berbeda untuk Kinesis dan Kafka. Anda dapat menemukan daftar semua opsi koneksi untuk setiap sumber data streaming di Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark. Perhatikan perbedaan berikut dalam pilihan koneksi streaming:

    • Sumber streaming Kinesis memerlukan streamARN, startingPosition, inferSchema, dan classification.

    • Sumber streaming Kafka membutuhkan connectionName, topicName, startingOffsets, inferSchema, dan classification.

  • format— Sebuah spesifikasi format. Ini digunakan untuk Amazon S3 atau AWS Glue koneksi yang mendukung berbagai format. Untuk informasi tentang format-format yang didukung, lihat Opsi format data untuk input dan output untuk Spark AWS Glue.

  • format_options — Pilihan format untuk format yang ditentukan. Untuk informasi tentang pilihan format yang didukung, lihat Opsi format data untuk input dan output untuk Spark AWS Glue.

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional).

Contoh untuk sumber streaming Amazon Kinesis:

kinesis_options = { "streamARN": "arn:aws:kinesis:us-east-2:777788889999:stream/fromOptionsStream", "startingPosition": "TRIM_HORIZON", "inferSchema": "true", "classification": "json" } data_frame_datasource0 = glueContext.create_data_frame.from_options(connection_type="kinesis", connection_options=kinesis_options)

Contoh untuk sumber streaming Kafka:

kafka_options = { "connectionName": "ConfluentKafka", "topicName": "kafka-auth-topic", "startingOffsets": "earliest", "inferSchema": "true", "classification": "json" } data_frame_datasource0 = glueContext.create_data_frame.from_options(connection_type="kafka", connection_options=kafka_options)

forEachBatch

forEachBatch(frame, batch_function, options)

Menerapkan batch_function yang diberikan ke setiap batch mikro yang dibaca dari sumber Streaming.

  • frame— Yang DataFrame berisi batch mikro saat ini.

  • batch_function — Sebuah fungsi yang akan diterapkan untuk setiap batch mikro.

  • options — Kumpulan pasangan kunci-nilai yang menyimpan informasi tentang cara memproses batch mikro. Opsi-opsi berikut diperlukan:

    • windowSize — Jumlah waktu yang diperlukan untuk pemrosesan setiap batch.

    • checkpointLocation — Lokasi di mana pos pemeriksaan disimpan untuk tugas ETL streaming.

    • batchMaxRetries — Jumlah waktu maksimum untuk mengulang mencoba batch sekali lagi jika gagal. Nilai default-nya adalah 3. Opsi ini hanya dapat dikonfigurasi untuk Glue versi 2.0 dan di atasnya.

Contoh:

glueContext.forEachBatch( frame = data_frame_datasource0, batch_function = processBatch, options = { "windowSize": "100 seconds", "checkpointLocation": "s3://kafka-auth-dataplane/confluent-test/output/checkpoint/" } ) def processBatch(data_frame, batchId): if (data_frame.count() > 0): datasource0 = DynamicFrame.fromDF( glueContext.add_ingestion_time_columns(data_frame, "hour"), glueContext, "from_data_frame" ) additionalOptions_datasink1 = {"enableUpdateCatalog": True} additionalOptions_datasink1["partitionKeys"] = ["ingest_yr", "ingest_mo", "ingest_day"] datasink1 = glueContext.write_dynamic_frame.from_catalog( frame = datasource0, database = "tempdb", table_name = "kafka-auth-table-output", transformation_ctx = "datasink1", additional_options = additionalOptions_datasink1 )

Bekerja dengan kumpulan data di Amazon S3

purge_table

purge_table(catalog_id=None, database="", table_name="", options={}, transformation_ctx="")

Menghapus file dari Amazon S3 untuk basis data dan tabel katalog yang ditentukan. Jika semua file dalam sebuah partisi dihapus, maka partisi tersebut juga dihapus dari katalog.

Jika Anda ingin dapat memulihkan objek yang dihapus, Anda dapat mengaktifkan versioning objek pada bucket Amazon S3. Ketika sebuah objek dihapus dari sebuah bucket yang versioning objeknya tidak diaktifkan, objek tidak akan dapat dipulihkan. Untuk informasi tentang cara memulihkan objek yang dihapus dalam sebuah bucket dengan versioning yang diaktifkan, lihat Bagaimana saya bisa mengambil objek Amazon S3 yang telah dihapus? di Pusat Pengetahuan AWS Support .

  • catalog_id — ID katalog Katalog Data yang sedang diakses (ID akun Katalog Data). Diatur ke None secara default. None default ke ID katalog dari akun yang melakukan panggilan dalam layanan.

  • database — Basis data yang akan digunakan.

  • table_name — Nama tabel yang akan digunakan.

  • options — Pilihan untuk mem-filter file yang akan dihapus dan untuk pembuatan file manifes.

    • retentionPeriod — Menentukan periode dalam jumlah jam untuk mempertahankan file. File yang lebih baru dari periode penyimpanan akan tetap disimpan. Diatur ke 168 jam (7 hari) secara default.

    • partitionPredicate — Partisi yang memenuhi predikat ini akan dihapus. File dalam periode penyimpanan dalam partisi ini tidak dihapus. Diatur ke "" — kosong secara default.

    • excludeStorageClasses — File dengan kelas penyimpanan di set excludeStorageClasses tidak dihapus. Default-nya adalah Set() — satu set kosong.

    • manifestFilePath — Path opsional untuk pembuatan file manifes. Semua file yang berhasil dibersihkan dicatat dalam Success.csv, dan yang gagal dicatat dalam Failed.csv

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional). Digunakan dalam path file manifes.

glueContext.purge_table("database", "table", {"partitionPredicate": "(month=='march')", "retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/"})

purge_s3_path

purge_s3_path(s3_path, options={}, transformation_ctx="")

Menghapus file dari path Amazon S3 yang ditentukan secara rekursif.

Jika Anda ingin dapat memulihkan objek yang dihapus, Anda dapat mengaktifkan versioning objek pada bucket Amazon S3. Ketika sebuah objek dihapus dari sebuah bucket yang versioning objeknya tidak dinyalakan, objek tidak akan dapat dipulihkan. Untuk informasi selengkapnya tentang cara memulihkan objek yang dihapus dalam bucket dengan pembuatan versi, lihat Bagaimana cara mengambil objek Amazon S3 yang telah dihapus? di pusat AWS Support pengetahuan.

  • s3_path — Path di Amazon S3 dari file yang akan dihapus dalam format s3://<bucket>/<prefix>/

  • options — Pilihan untuk mem-filter file yang akan dihapus dan untuk pembuatan file manifes.

    • retentionPeriod — Menentukan periode dalam jumlah jam untuk mempertahankan file. File yang lebih baru dari periode penyimpanan akan tetap disimpan. Diatur ke 168 jam (7 hari) secara default.

    • excludeStorageClasses — File dengan kelas penyimpanan di set excludeStorageClasses tidak dihapus. Default-nya adalah Set() — satu set kosong.

    • manifestFilePath — Path opsional untuk pembuatan file manifes. Semua file yang berhasil dibersihkan dicatat dalam Success.csv, dan yang gagal dicatat dalam Failed.csv

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional). Digunakan dalam path file manifes.

glueContext.purge_s3_path("s3://bucket/path/", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/"})

transition_table

transition_table(database, table_name, transition_to, options={}, transformation_ctx="", catalog_id=None)

Transisi kelas penyimpanan file yang disimpan di Amazon S3 untuk basis data dan tabel katalog yang ditentukan.

Anda dapat melakukan transisi antara dua kelas penyimpanan. Untuk kelas penyimpanan GLACIER dan DEEP_ARCHIVE, Anda dapat melakukan transisi ke kelas-kelas ini. Namun, Anda harus menggunakan S3 RESTORE untuk melakukan transisi dari kelas penyimpanan GLACIER dan DEEP_ARCHIVE.

Jika Anda menjalankan pekerjaan AWS Glue ETL yang membaca file atau partisi dari Amazon S3, Anda dapat mengecualikan beberapa jenis kelas penyimpanan Amazon S3. Untuk informasi selengkapnya, lihat Mengecualikan Kelas Penyimpanan Amazon S3.

  • database — Basis data yang akan digunakan.

  • table_name — Nama tabel yang akan digunakan.

  • transition_toKelas penyimpanan Amazon S3 tempat tujuan transisi.

  • options — Pilihan untuk mem-filter file yang akan dihapus dan untuk pembuatan file manifes.

    • retentionPeriod — Menentukan periode dalam jumlah jam untuk mempertahankan file. File yang lebih baru dari periode penyimpanan akan tetap disimpan. Diatur ke 168 jam (7 hari) secara default.

    • partitionPredicate — Partisi yang memenuhi predikat ini akan ditransisi. File dalam periode penyimpanan dalam partisi ini tidak ditransisi. Diatur ke "" — kosong secara default.

    • excludeStorageClasses — File dengan kelas penyimpanan di set excludeStorageClasses tidak ditransisi. Default-nya adalah Set() — satu set kosong.

    • manifestFilePath — Path opsional untuk pembuatan file manifes. Semua file yang berhasil ditransisi dicatat dalam Success.csv, dan yang gagal dicatat dalam Failed.csv

    • accountId — ID akun Amazon Web Services untuk menjalankan transformasi transisi. Wajib untuk transformasi ini.

    • roleArn— AWS Peran untuk menjalankan transformasi transisi. Wajib untuk transformasi ini.

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional). Digunakan dalam path file manifes.

  • catalog_id — ID katalog Katalog Data yang sedang diakses (ID akun Katalog Data). Diatur ke None secara default. None default ke ID katalog dari akun yang melakukan panggilan dalam layanan.

glueContext.transition_table("database", "table", "STANDARD_IA", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/", "accountId": "12345678901", "roleArn": "arn:aws:iam::123456789012:user/example-username"})

transition_s3_path

transition_s3_path(s3_path, transition_to, options={}, transformation_ctx="")

Transisi kelas penyimpanan file di path Amazon S3 yang ditentukan secara rekursif.

Anda dapat melakukan transisi antara dua kelas penyimpanan. Untuk kelas penyimpanan GLACIER dan DEEP_ARCHIVE, Anda dapat melakukan transisi ke kelas-kelas ini. Namun, Anda harus menggunakan S3 RESTORE untuk melakukan transisi dari kelas penyimpanan GLACIER dan DEEP_ARCHIVE.

Jika Anda menjalankan pekerjaan AWS Glue ETL yang membaca file atau partisi dari Amazon S3, Anda dapat mengecualikan beberapa jenis kelas penyimpanan Amazon S3. Untuk informasi selengkapnya, lihat Mengecualikan Kelas Penyimpanan Amazon S3.

  • s3_path — Path di Amazon S3 dari file yang akan ditransisi dalam format s3://<bucket>/<prefix>/

  • transition_toKelas penyimpanan Amazon S3 tempat tujuan transisi.

  • options — Pilihan untuk mem-filter file yang akan dihapus dan untuk pembuatan file manifes.

    • retentionPeriod — Menentukan periode dalam jumlah jam untuk mempertahankan file. File yang lebih baru dari periode penyimpanan akan tetap disimpan. Diatur ke 168 jam (7 hari) secara default.

    • partitionPredicate — Partisi yang memenuhi predikat ini akan ditransisi. File dalam periode penyimpanan dalam partisi ini tidak ditransisi. Diatur ke "" — kosong secara default.

    • excludeStorageClasses — File dengan kelas penyimpanan di set excludeStorageClasses tidak ditransisi. Default-nya adalah Set() — satu set kosong.

    • manifestFilePath — Path opsional untuk pembuatan file manifes. Semua file yang berhasil ditransisi dicatat dalam Success.csv, dan yang gagal dicatat dalam Failed.csv

    • accountId — ID akun Amazon Web Services untuk menjalankan transformasi transisi. Wajib untuk transformasi ini.

    • roleArn— AWS Peran untuk menjalankan transformasi transisi. Wajib untuk transformasi ini.

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional). Digunakan dalam path file manifes.

glueContext.transition_s3_path("s3://bucket/prefix/", "STANDARD_IA", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/", "accountId": "12345678901", "roleArn": "arn:aws:iam::123456789012:user/example-username"})

Ekstraksi

extract_jdbc_conf

extract_jdbc_conf(connection_name, catalog_id = None)

Mengembalikan dict dengan kunci dengan properti konfigurasi dari objek AWS Glue koneksi dalam Katalog Data.

  • user— Nama pengguna database.

  • password— Kata sandi basis data.

  • vendor- Menentukan vendor (mysql,postgresql,oracle,sqlserver, dll).

  • enforceSSL— String boolean yang menunjukkan apakah koneksi aman diperlukan.

  • customJDBCCert— Gunakan sertifikat klien tertentu dari jalur Amazon S3 yang ditunjukkan.

  • skipCustomJDBCCertValidation— String boolean yang menunjukkan apakah customJDBCCert harus divalidasi oleh CA.

  • customJDBCCertString— Informasi tambahan tentang sertifikat khusus, khusus untuk jenis driver.

  • url— URL JDBC (Usang) hanya dengan protokol, server, dan port.

  • fullUrl— URL JDBC seperti yang dimasukkan saat koneksi dibuat (Tersedia dalam AWS Glue versi 3.0 atau yang lebih baru).

Contoh mengambil konfigurasi JDBC:

jdbc_conf = glueContext.extract_jdbc_conf(connection_name="your_glue_connection_name") print(jdbc_conf) >>> {'enforceSSL': 'false', 'skipCustomJDBCCertValidation': 'false', 'url': 'jdbc:mysql://myserver:3306', 'fullUrl': 'jdbc:mysql://myserver:3306/mydb', 'customJDBCCertString': '', 'user': 'admin', 'customJDBCCert': '', 'password': '1234', 'vendor': 'mysql'}

Transaksi

start_transaction

start_transaction(read_only)

Mulai transaksi baru. Secara internal memanggil Lake Formation StartTransaction API.

  • read_only— (Boolean) Menunjukkan apakah transaksi ini harus dibaca saja atau dibaca dan ditulis. Penulisan yang dibuat menggunakan ID transaksi hanya-baca akan ditolak. Transaksi read-only tidak perlu dilakukan.

Mengembalikan ID transaksi.

commit_transaction

commit_transaction(transaction_id, wait_for_commit = True)

Upaya untuk melakukan transaksi yang ditentukan. commit_transactiondapat kembali sebelum transaksi selesai dilakukan. Secara internal memanggil Lake Formation CommitTransaction API.

  • transaction_id — (String) Transaksi untuk melakukan.

  • wait_for_commit— (Boolean) Menentukan apakah commit_transaction pengembalian segera. Nilai default-nya adalah betul. Jika salah, commit_transaction polling dan menunggu sampai transaksi dilakukan. Jumlah waktu tunggu dibatasi hingga 1 menit menggunakan backoff eksponensial dengan maksimal 6 upaya coba lagi.

Mengembalikan Boolean untuk menunjukkan apakah komit dilakukan atau tidak.

pembatalan_transaksi

cancel_transaction(transaction_id)

Upaya untuk membatalkan transaksi yang ditentukan. Mengembalikan TransactionCommittedException pengecualian jika transaksi sebelumnya dilakukan. Secara internal memanggil Lake Formation CancelTransactionAPI.

  • transaction_id— (String) Transaksi untuk membatalkan.

Menulis

getSink

getSink(connection_type, format = None, transformation_ctx = "", **options)

Mengambil sebuah objek DataSink yang dapat digunakan untuk menulis DynamicFrames ke sumber eksternal. Periksa format SparkSQL terlebih dahulu untuk memastikan Anda mendapatkan sink yang diharapkan.

  • connection_type — Jenis koneksi yang akan digunakan, seperti Amazon S3, Amazon Redshift, dan JDBC. Nilai yang valid meliputi s3mysql,postgresql,,redshift,sqlserver,oracle,kinesis, dankafka.

  • format — Format SparkSQL yang akan digunakan (opsional).

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional).

  • options— Kumpulan pasangan nama-nilai yang digunakan untuk menentukan opsi koneksi. Beberapa nilai yang mungkin adalah:

    • userdanpassword: Untuk otorisasi

    • url: Titik akhir untuk penyimpanan data

    • dbtable: Nama tabel target

    • bulkSize: Tingkat paralelisme untuk operasi penyisipan

Opsi yang dapat Anda tentukan tergantung pada jenis koneksi. Lihat Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark untuk nilai dan contoh tambahan.

Contoh:

>>> data_sink = context.getSink("s3") >>> data_sink.setFormat("json"), >>> data_sink.writeFrame(myFrame)

write_dynamic_frame_from_options

write_dynamic_frame_from_options(frame, connection_type, connection_options={}, format=None, format_options={}, transformation_ctx = "")

Menulis dan mengembalikan sebuah DynamicFrame menggunakan koneksi dan format yang ditentukan.

  • frameDynamicFrame yang akan ditulis.

  • connection_type — Jenis koneksi, seperti Amazon S3, Amazon Redshift, dan JDBC. Nilai yang valid meliputi s3mysql,postgresql,,redshift,sqlserver,oracle,kinesis, dankafka.

  • connection_options — Pilihan koneksi, seperti path dan tabel basis data (opsional). Untuk connection_type dari s3, path Amazon S3 didefinisikan.

    connection_options = {"path": "s3://aws-glue-target/temp"}

    Untuk koneksi JDBC, beberapa properti harus didefinisikan. Perhatikan bahwa nama basis data harus menjadi bagian dari URL. Secara opsional dapat disertakan dalam opsi koneksi.

    Awas

    Menyimpan kata sandi dalam skrip Anda tidak disarankan. Pertimbangkan boto3 untuk menggunakan untuk mengambilnya dari AWS Secrets Manager atau Katalog Data AWS Glue.

    connection_options = {"url": "jdbc-url/database", "user": "username", "password": passwordVariable,"dbtable": "table-name", "redshiftTmpDir": "s3-tempdir-path"}

    Properti dbtable adalah nama tabel JDBC. Untuk penyimpanan data JDBC yang mendukung skema dalam basis data, tentukan schema.table-name. Jika skema tidak disediakan, maka skema "publik" default digunakan.

    Untuk informasi selengkapnya, lihat Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark.

  • format— Sebuah spesifikasi format. Ini digunakan untuk Amazon S3 atau AWS Glue koneksi yang mendukung berbagai format. Lihat Opsi format data untuk input dan output untuk Spark AWS Glue untuk format yang didukung.

  • format_options — Pilihan format untuk format yang ditentukan. Lihat Opsi format data untuk input dan output untuk Spark AWS Glue untuk format yang didukung.

  • transformation_ctx — Sebuah konteks transformasi yang akan digunakan (opsional).

write_from_options

write_from_options(frame_or_dfc, connection_type, connection_options={}, format={}, format_options={}, transformation_ctx = "")

Menulis dan mengembalikan DynamicFrame atau DynamicFrameCollection yang dibuat dengan informasi koneksi dan format yang ditentukan.

  • frame_or_dfcDynamicFrame atau DynamicFrameCollection yang akan ditulis.

  • connection_type — Jenis koneksi, seperti Amazon S3, Amazon Redshift, dan JDBC. Nilai yang valid termasuk s3, mysql, postgresql, redshift, sqlserver, dan oracle.

  • connection_options — Pilihan koneksi, seperti path dan tabel basis data (opsional). Untuk connection_type dari s3, path Amazon S3 didefinisikan.

    connection_options = {"path": "s3://aws-glue-target/temp"}

    Untuk koneksi JDBC, beberapa properti harus didefinisikan. Perhatikan bahwa nama basis data harus menjadi bagian dari URL. Secara opsional dapat disertakan dalam opsi koneksi.

    Awas

    Menyimpan kata sandi dalam skrip Anda tidak disarankan. Pertimbangkan boto3 untuk menggunakan untuk mengambilnya dari AWS Secrets Manager atau Katalog Data AWS Glue.

    connection_options = {"url": "jdbc-url/database", "user": "username", "password": passwordVariable,"dbtable": "table-name", "redshiftTmpDir": "s3-tempdir-path"}

    Properti dbtable adalah nama tabel JDBC. Untuk penyimpanan data JDBC yang mendukung skema dalam basis data, tentukan schema.table-name. Jika skema tidak disediakan, maka skema "publik" default digunakan.

    Untuk informasi selengkapnya, lihat Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark.

  • format— Sebuah spesifikasi format. Ini digunakan untuk Amazon S3 atau AWS Glue koneksi yang mendukung berbagai format. Lihat Opsi format data untuk input dan output untuk Spark AWS Glue untuk format yang didukung.

  • format_options — Pilihan format untuk format yang ditentukan. Lihat Opsi format data untuk input dan output untuk Spark AWS Glue untuk format yang didukung.

  • transformation_ctx — Sebuah konteks transformasi yang akan digunakan (opsional).

write_dynamic_frame_from_catalog

write_dynamic_frame_from_catalog(frame, database, table_name, redshift_tmp_dir, transformation_ctx = "", additional_options = {}, catalog_id = None)

Menulis dan mengembalikan DynamicFrame menggunakan informasi dari basis data dan tabel Katalog Data .

  • frameDynamicFrame yang akan ditulis.

  • Database — Basis data Katalog Data yang berisi tabel.

  • table_name — Nama tabel Katalog Data yang dikaitkan dengan target.

  • redshift_tmp_dir — Sebuah direktori sementara Amazon Redshift yang akan digunakan (opsional).

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional).

  • additional_options — Kumpulan pasangan nama-nilai opsional.

  • catalog_id — ID katalog (ID akun) dari Katalog Data yang sedang diakses. Bila Tidak Ada, maka ID akun default pemanggil yang akan digunakan.

write_data_frame_from_catalog

write_data_frame_from_catalog(frame, database, table_name, redshift_tmp_dir, transformation_ctx = "", additional_options = {}, catalog_id = None)

Menulis dan mengembalikan DataFrame menggunakan informasi dari basis data dan tabel Katalog Data . Metode ini mendukung penulisan ke format danau data (Hudi, Iceberg, dan Delta Lake). Untuk informasi selengkapnya, lihat Menggunakan kerangka kerja data lake dengan pekerjaan AWS Glue ETL.

  • frameDataFrame yang akan ditulis.

  • Database — Basis data Katalog Data yang berisi tabel.

  • table_name— Nama tabel Katalog Data yang dikaitkan dengan target.

  • redshift_tmp_dir — Sebuah direktori sementara Amazon Redshift yang akan digunakan (opsional).

  • transformation_ctx — Konteks transformasi yang akan digunakan (opsional).

  • additional_options — Kumpulan pasangan nama-nilai opsional.

    • useSparkDataSink— Ketika diatur ke true, memaksa AWS Glue untuk menggunakan Spark Data Sink API asli untuk menulis ke tabel. Saat Anda mengaktifkan opsi ini, Anda dapat menambahkan opsi Sumber Data Spark apa pun sesuai additional_options kebutuhan. AWS Glue meneruskan opsi ini langsung ke penulis Spark.

  • catalog_id— ID katalog (ID akun) dari Katalog Data yang sedang diakses. Bila Anda tidak menentukan nilai, ID akun default pemanggil akan digunakan.

Batasan

Pertimbangkan batasan berikut saat Anda menggunakan useSparkDataSink opsi:

Contoh: Menulis ke tabel Hudi menggunakan penulis Spark Data Source

hudi_options = { 'useSparkDataSink': True, 'hoodie.table.name': <table_name>, 'hoodie.datasource.write.storage.type': 'COPY_ON_WRITE', 'hoodie.datasource.write.recordkey.field': 'product_id', 'hoodie.datasource.write.table.name': <table_name>, 'hoodie.datasource.write.operation': 'upsert', 'hoodie.datasource.write.precombine.field': 'updated_at', 'hoodie.datasource.write.hive_style_partitioning': 'true', 'hoodie.upsert.shuffle.parallelism': 2, 'hoodie.insert.shuffle.parallelism': 2, 'hoodie.datasource.hive_sync.enable': 'true', 'hoodie.datasource.hive_sync.database': <database_name>, 'hoodie.datasource.hive_sync.table': <table_name>, 'hoodie.datasource.hive_sync.use_jdbc': 'false', 'hoodie.datasource.hive_sync.mode': 'hms'} glueContext.write_data_frame.from_catalog( frame = <df_product_inserts>, database = <database_name>, table_name = <table_name>, additional_options = hudi_options )

write_dynamic_frame_from_jdbc_conf

write_dynamic_frame_from_jdbc_conf(frame, catalog_connection, connection_options={}, redshift_tmp_dir = "", transformation_ctx = "", catalog_id = None)

Menulis dan mengembalikan sebuah DynamicFrame menggunakan informasi koneksi JDBC yang ditentukan.

  • frameDynamicFrame yang akan ditulis.

  • catalog_connection — Koneksi katalog yang akan digunakan.

  • connection_options — Pilihan koneksi, seperti path dan tabel basis data (opsional). Untuk informasi selengkapnya, lihat Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark.

  • redshift_tmp_dir — Sebuah direktori sementara Amazon Redshift yang akan digunakan (opsional).

  • transformation_ctx — Sebuah konteks transformasi yang akan digunakan (opsional).

  • catalog_id — ID katalog (ID akun) dari Katalog Data yang sedang diakses. Bila Tidak Ada, maka ID akun default pemanggil yang akan digunakan.

write_from_jdbc_conf

write_from_jdbc_conf(frame_or_dfc, catalog_connection, connection_options={}, redshift_tmp_dir = "", transformation_ctx = "", catalog_id = None)

Menulis dan mengembalikan sebuah DynamicFrame atau DynamicFrameCollection menggunakan informasi koneksi JDBC yang ditentukan.

  • frame_or_dfcDynamicFrame atau DynamicFrameCollection yang akan ditulis.

  • catalog_connection — Koneksi katalog yang akan digunakan.

  • connection_options — Pilihan koneksi, seperti path dan tabel basis data (opsional). Untuk informasi selengkapnya, lihat Jenis dan opsi koneksi untuk ETL di AWS Glue untuk Spark.

  • redshift_tmp_dir — Sebuah direktori sementara Amazon Redshift yang akan digunakan (opsional).

  • transformation_ctx — Sebuah konteks transformasi yang akan digunakan (opsional).

  • catalog_id — ID katalog (ID akun) dari Katalog Data yang sedang diakses. Bila Tidak Ada, maka ID akun default pemanggil yang akan digunakan.