Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengoptimalkan pembacaan dengan pushdown di Glue ETL AWS
Pushdown adalah teknik optimasi yang mendorong logika tentang mengambil data lebih dekat ke sumber data Anda. Sumbernya bisa berupa database atau sistem file seperti Amazon S3. Saat menjalankan operasi tertentu secara langsung pada sumbernya, Anda dapat menghemat waktu dan daya pemrosesan dengan tidak membawa semua data melalui jaringan ke mesin Spark yang dikelola oleh GlueAWS.
Cara lain untuk mengatakan ini adalah bahwa pushdown mengurangi pemindaian data. Untuk informasi lebih lanjut tentang proses mengidentifikasi kapan teknik ini tepat, lihat Mengurangi jumlah pemindaian data dalam Panduan Pekerjaan Glue for Apache Spark Praktik Terbaik untuk Penyetelan kinerja AWS Glue untuk Apache Spark pada AWS Panduan Preskriptif.
Predikat pushdown pada file yang disimpan di Amazon S3
Saat bekerja dengan file di Amazon S3 yang telah diatur berdasarkan awalan, Anda dapat memfilter jalur Amazon S3 target Anda dengan menentukan predikat pushdown. Daripada membaca kumpulan data lengkap dan menerapkan filter dalam aDynamicFrame
, Anda dapat langsung menerapkan filter ke metadata partisi yang disimpan di Katalog Data AWS Glue. Pendekatan ini memungkinkan Anda untuk secara selektif membuat daftar dan hanya membaca data yang diperlukan. Untuk informasi selengkapnya tentang proses ini, termasuk menulis ke ember berdasarkan partisi, lihatMengelola partisi untuk output ETL di AWS Glue.
Anda mencapai predikat pushdown di Amazon S3 dengan menggunakan parameter. push_down_predicate
Pertimbangkan ember di Amazon S3 yang telah Anda partisi berdasarkan tahun, bulan, dan hari. Jika Anda ingin mengambil data pelanggan untuk Juni 2022, Anda dapat menginstruksikan AWS Glue untuk hanya membaca jalur Amazon S3 yang relevan. push_down_predicate
Dalam hal ini adalahyear='2022' and month='06'
. Menyatukan semuanya, operasi baca dapat dicapai seperti di bawah ini:
Dalam skenario sebelumnya, push_down_predicate
mengambil daftar semua partisi dari Katalog Data AWS Glue dan menyaringnya sebelum membaca file Amazon S3 yang mendasarinya. Meskipun ini membantu dalam banyak kasus, ketika bekerja dengan kumpulan data yang memiliki jutaan partisi, proses daftar partisi dapat memakan waktu. Untuk mengatasi masalah ini, pemangkasan partisi sisi server dapat digunakan untuk meningkatkan kinerja. Ini dilakukan dengan membangun indeks Partisi untuk data Anda di Katalog Data AWS Glue. Untuk informasi selengkapnya tentang indeks partisi, lihatMembuat indeks partisi . Anda kemudian dapat menggunakan catalogPartitionPredicate
opsi untuk mereferensikan indeks. Untuk contoh mengambil partisi dengancatalogPartitionPredicate
, lihat. Pemfilteran sisi server menggunakan predikat partisi katalog
Pushdown saat bekerja dengan sumber JDBC
Pembaca AWS Glue JDBC yang digunakan dalam GlueContext
mendukung pushdown pada database yang didukung dengan menyediakan kueri SQL khusus yang dapat berjalan langsung pada sumbernya. Ini dapat dicapai dengan mengatur sampleQuery
parameter. Kueri sampel Anda dapat menentukan kolom mana yang akan dipilih serta menyediakan predikat pushdown untuk membatasi data yang ditransfer ke mesin Spark.
Secara default, kueri sampel beroperasi pada satu node, yang dapat mengakibatkan kegagalan pekerjaan saat berhadapan dengan volume data yang besar. Untuk menggunakan fitur ini untuk menanyakan data dalam skala besar, Anda harus mengonfigurasi partisi kueri dengan menyetel enablePartitioningForSampleQuery
ke true, yang akan mendistribusikan kueri ke beberapa node di seluruh kunci pilihan Anda. Partisi kueri juga memerlukan beberapa parameter konfigurasi lain yang diperlukan. Untuk informasi selengkapnya tentang partisi kueri, lihat. Membaca dari tabel JDBC secara paralel
Saat mengaturenablePartitioningForSampleQuery
, AWS Glue akan menggabungkan predikat pushdown Anda dengan predikat partisi saat menanyakan database Anda. Anda sampleQuery
harus diakhiri dengan AND
for AWS Glue untuk menambahkan kondisi partisi. (Jika Anda tidak memberikan predikat pushdown, sampleQuery
harus diakhiri dengan a). WHERE
Lihat contoh di bawah ini, di mana kita menekan predikat untuk hanya mengambil baris yang id
lebih besar dari 1000. Ini hanya sampleQuery
akan mengembalikan kolom nama dan lokasi untuk baris yang id
lebih besar dari nilai yang ditentukan:
catatan
Jika customer_tbl
memiliki nama yang berbeda dalam Katalog Data dan datastore yang mendasarinya, Anda harus memberikan nama tabel yang mendasarinya di sample_query, karena kueri diteruskan ke datastore yang mendasarinya.
Anda juga dapat melakukan query terhadap tabel JDBC tanpa mengintegrasikan dengan AWS Glue Data Catalog. Alih-alih memberikan nama pengguna dan kata sandi sebagai parameter ke metode, Anda dapat menggunakan kembali kredensil dari koneksi yang sudah ada sebelumnya dengan menyediakan dan. useConnectionProperties
connectionName
Dalam contoh ini, kita mengambil kredensil dari koneksi yang disebut. my_postgre_connection
Catatan dan batasan untuk pushdown di Glue AWS
Pushdown, sebagai sebuah konsep, berlaku saat membaca dari sumber non-streaming. AWS Glue mendukung berbagai sumber - kemampuan untuk menekan tergantung pada sumber dan konektor.
Saat menghubungkan ke Snowflake, Anda dapat menggunakan opsi ini
query
. Fungsionalitas serupa ada di konektor Redshift di AWS Glue 4.0 dan versi yang lebih baru. Untuk informasi lebih lanjut tentang membaca dari Snowflake denganquery
, lihat. Membaca dari tabel SnowflakePembaca DynamoDB ETL tidak mendukung filter atau predikat pushdown. MongoDB dan DocumentDB juga tidak mendukung fungsi semacam ini.
Saat membaca dari data yang disimpan di Amazon S3 dalam format tabel terbuka, metode partisi untuk file di Amazon S3 tidak lagi cukup. Untuk membaca dan menulis dari partisi menggunakan format tabel terbuka, lihat dokumentasi untuk formatnya.
-
DynamicFrame metode tidak melakukan pushdown proyeksi Amazon S3. Semua kolom akan dibaca dari file yang melewati filter predikat.
Saat bekerja dengan
custom.jdbc
konektor di AWS Glue, kemampuan untuk menekan tergantung pada sumber dan konektor. Harap tinjau dokumentasi konektor yang sesuai untuk mengonfirmasi apakah dan bagaimana mendukung pushdown di GlueAWS.