Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
GlueContext kelas
Membungkus SparkContext
__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 termasuks3
,mysql
,postgresql
,redshift
,sqlserver
,oracle
, dandynamodb
.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 kecualiendpointUrl
,streamName
,bootstrap.servers
,security.protocol
,topicName
,classification
, dandelimiter
. 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 itupush_down_predicate
dancatalogPartitionPredicate
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 termasuks3
,mysql
,postgresql
,redshift
,sqlserver
,oracle
, dandynamodb
.connection_options
— Pilihan koneksi, seperti path dan tabel basis data (opsional). Untukconnection_type
daris3
, 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, tentukanschema.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. DynamicFrame
Satu-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 kecualiendpointUrl
,streamName
,bootstrap.servers
,security.protocol
,topicName
,classification
, dandelimiter
. -
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 10maxSampleFilesPerPartition
— 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, danmaxSampleFilesPerPartition
= 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 keNone
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. DynamicFrame
Satu-satunya berisi num
catatan pertama dari sumber data.
connection_type
— Jenis koneksi, seperti Amazon S3, Amazon Redshift, dan JDBC. Nilai yang valid termasuks3
,mysql
,postgresql
,redshift
,sqlserver
,oracle
, dandynamodb
.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 10maxSampleFilesPerPartition
— 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, danmaxSampleFilesPerPartition
= 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.
-
dataFrame
—dataFrame
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, makadataFrame
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, sepertistartingPosition
,maxFetchTimeInMs
, danstartingOffsets
.-
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 menggunakanclassification
properti. Untuk mempelajari lebih lanjut tentang Spark Data Source API, lihat dokumentasi resmi Apache Spark. Menggunakan
create_data_frame_from_catalog
denganuseSparkDataSource
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 mengaktifkan
useSparkDataSource
, Anda juga dapat menambahkan salah satu opsi Sumber Data Sparksesuai 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 mengaturuseSparkDataSource
ke true.
-
Batasan
Pertimbangkan batasan berikut saat Anda menggunakan useSparkDataSource
opsi:
-
Saat Anda menggunakan
useSparkDataSource
, AWS Glue membuat yang baruDataFrame
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 mencakupkinesis
dankafka
. -
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
, danclassification
. -
Sumber streaming Kafka membutuhkan
connectionName
,topicName
,startingOffsets
,inferSchema
, danclassification
.
-
-
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?
-
catalog_id
— ID katalog Katalog Data yang sedang diakses (ID akun Katalog Data). Diatur keNone
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 setexcludeStorageClasses
tidak dihapus. Default-nya adalahSet()
— satu set kosong.manifestFilePath
— Path opsional untuk pembuatan file manifes. Semua file yang berhasil dibersihkan dicatat dalamSuccess.csv
, dan yang gagal dicatat dalamFailed.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
s3_path
— Path di Amazon S3 dari file yang akan dihapus dalam formats3://<
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 setexcludeStorageClasses
tidak dihapus. Default-nya adalahSet()
— satu set kosong.manifestFilePath
— Path opsional untuk pembuatan file manifes. Semua file yang berhasil dibersihkan dicatat dalamSuccess.csv
, dan yang gagal dicatat dalamFailed.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_to
— Kelas 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 setexcludeStorageClasses
tidak ditransisi. Default-nya adalahSet()
— satu set kosong.manifestFilePath
— Path opsional untuk pembuatan file manifes. Semua file yang berhasil ditransisi dicatat dalamSuccess.csv
, dan yang gagal dicatat dalamFailed.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 keNone
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 formats3://<
bucket
>/<prefix
>/transition_to
— Kelas 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 setexcludeStorageClasses
tidak ditransisi. Default-nya adalahSet()
— satu set kosong.manifestFilePath
— Path opsional untuk pembuatan file manifes. Semua file yang berhasil ditransisi dicatat dalamSuccess.csv
, dan yang gagal dicatat dalamFailed.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 apakahcustomJDBCCert
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_transaction
dapat kembali sebelum transaksi selesai dilakukan. Secara internal memanggil Lake Formation CommitTransaction API.
transaction_id
— (String) Transaksi untuk melakukan.wait_for_commit
— (Boolean) Menentukan apakahcommit_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 meliputis3
mysql
,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:-
user
danpassword
: 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.
frame
—DynamicFrame
yang akan ditulis.connection_type
— Jenis koneksi, seperti Amazon S3, Amazon Redshift, dan JDBC. Nilai yang valid meliputis3
mysql
,postgresql
,,redshift
,sqlserver
,oracle
,kinesis
, dankafka
.connection_options
— Pilihan koneksi, seperti path dan tabel basis data (opsional). Untukconnection_type
daris3
, 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, tentukanschema.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_dfc
—DynamicFrame
atauDynamicFrameCollection
yang akan ditulis.connection_type
— Jenis koneksi, seperti Amazon S3, Amazon Redshift, dan JDBC. Nilai yang valid termasuks3
,mysql
,postgresql
,redshift
,sqlserver
, danoracle
.connection_options
— Pilihan koneksi, seperti path dan tabel basis data (opsional). Untukconnection_type
daris3
, 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, tentukanschema.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 .
frame
—DynamicFrame
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.
frame
—DataFrame
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 Sparkapa 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:
-
enableUpdateCatalogOpsi ini tidak didukung 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.
frame
—DynamicFrame
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_dfc
—DynamicFrame
atauDynamicFrameCollection
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.