Menggunakan S3 Pilih Pushdown dengan Presto untuk meningkatkan kinerja - Amazon EMR

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

Menggunakan S3 Pilih Pushdown dengan Presto untuk meningkatkan kinerja

Dengan rilis Amazon EMR versi 5.18.0 dan yang lebih baru, Anda dapat menggunakan S3 Select Pushdown dengan Presto on Amazon EMR. Fitur ini memungkinkan Presto untuk “push down” pekerjaan komputasi operasi proyeksi (misalnya, SELECT) dan operasi predikat (misalnya, WHERE) ke Amazon S3. Hal ini memungkinkan query untuk mengambil hanya data yang diperlukan dari Amazon S3, yang dapat meningkatkan kinerja dan mengurangi jumlah data yang ditransfer antara Amazon EMR dan Amazon S3 di beberapa aplikasi.

Apakah S3 Pilih Pushdown tepat untuk aplikasi saya?

Kami menyarankan Anda patokan aplikasi Anda dengan dan tanpa S3 Pilih Pushdown untuk melihat apakah menggunakannya mungkin cocok untuk aplikasi Anda.

Gunakan panduan berikut untuk menentukan apakah aplikasi Anda adalah kandidat untuk menggunakan S3 Pilih:

  • Permintaan Anda menyaring lebih dari setengah dari kumpulan data asli.

  • Predikat filter kueri permintaan Anda menggunakan kolom yang memiliki tipe data yang didukung oleh Presto dan S3 Select. The timestamp, real, dan tipe data ganda tidak didukung oleh S3 Pilih Pushdown. Sebaiknya gunakan tipe data desimal untuk data numerik. Untuk informasi lebih lanjut tentang jenis data yang didukung untuk S3 Select, lihat Jenis data dalam Panduan Pengguna Amazon Simple Storage Service.

  • Koneksi jaringan Anda antara Amazon S3 dan klaster Amazon EMR memiliki kecepatan transfer yang baik dan bandwidth yang tersedia. Amazon S3 tidak memampatkan tanggapan HTTP, sehingga ukuran respon kemungkinan akan meningkatkan file input terkompresi.

Pertimbangan dan batasan

  • Hanya objek yang disimpan dalam format CSV yang didukung. Objek dapat dikompresi atau opsional dikompresi dengan gzip atau bzip2.

  • Properti AllowQuotedRecordDelimiters tidak didukung. Jika properti ini ditentukan, permintaan gagal.

  • Gunakan enkripsi sisi server Amazon S3 dengan kunci enkripsi yang disediakan pelanggan (SSE-C) dan enkripsi sisi klien tidak didukung.

  • S3 Pilih Pushdown bukan pengganti untuk menggunakan format file kolumnar atau terkompresi seperti ORC atau Parket.

Mengaktifkan S3 Pilih Pushdown dengan PrestoDB atau Trino

Untuk mengaktifkan S3 Pilih Pushdown untuk PrestoDB di Amazon EMR, gunakan presto-connector-hive klasifikasi konfigurasi untuk mengatur hive.s3select-pushdown.enabled ke true Seperti yang ditunjukkan dalam contoh di bawah ini. Untuk informasi selengkapnya, lihat Konfigurasikan aplikasi. Nilai hive.s3select-pushdown.max-koneksi juga harus ditetapkan. Untuk sebagian besar aplikasi, pengaturan default 500 harus memadai. Untuk informasi selengkapnya, lihat Memahami dan menyetel hive.s3select-pushdown.max-koneksi di bawah.

Untuk PrestoSQL pada EMR versi 6.1.0 - 6.3.0, ganti contohpresto-connector-hive di bawah ini denganprestosql-connector-hive.

Amazon EMR versi 6.4.0 dan yang lebih baru menggunakan nama baru Trino, bukan PrestoSQL. Jika Anda menggunakan Trino, gantipresto-connector-hive pada contoh di bawah ini dengantrino-connector-hive

[ { "classification": "presto-connector-hive", "properties": { "hive.s3select-pushdown.enabled": "true", "hive.s3select-pushdown.max-connections": "500" } } ]

Memahami dan menyetel hive.s3select-pushdown.max-koneksi

Secara default, Presto menggunakan EMRFS sebagai sistem file. Pengaturan fs.s3.maxConnections dalam emrfs-site klasifikasi konfigurasi menentukan koneksi klien maksimum yang diijinkan untuk Amazon S3 melalui EMRFS untuk Presto. Secara default, ini adalah 500. S3 Pilih Pushdown melewati EMRFS saat mengakses Amazon S3 untuk operasi predikat. Dalam hal ini, nilai hive.s3select-pushdown.max-connections menentukan jumlah maksimum koneksi klien yang diizinkan untuk operasi tersebut dari node pekerja. Namun, setiap permintaan untuk Amazon S3 yang Presto memulai yang tidak didorong ke bawah - misalnya, GET operasi-terus diatur oleh nilai fs.s3.maxConnections.

Jika aplikasi Anda mengalami kesalahan “Timeout menunggu koneksi dari kolam,” tingkatkan nilai keduanya hive.s3select-pushdown.max-connections dan fs.s3.maxConnections.