Pertimbangan - Amazon EMR

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

Pertimbangan

Perhatikan perilaku dan batasan ini saat Anda menggunakan konektor DynamoDB dengan Apache Spark atau Apache Hive.

Pertimbangan saat menggunakan konektor DynamoDB dengan Apache Spark

  • Spark SQL tidak mendukung pembuatan tabel Hive dengan opsi penangan penyimpanan. Untuk informasi selengkapnya, lihat Menentukan format penyimpanan untuk tabel Hive dalam dokumentasi Apache Spark.

  • Spark SQL tidak mendukung STORED BY operasi dengan handler penyimpanan. Jika Anda ingin berinteraksi dengan tabel DynamoDB melalui tabel Hive eksternal, gunakan Hive untuk membuat tabel terlebih dahulu.

  • Untuk menerjemahkan kueri ke query DynamoDB, konektor DynamoDB menggunakan pushdown predikat. Predikat pushdown memfilter data dengan kolom yang dipetakan ke kunci partisi dari tabel DynamoDB. Predikat pushdown hanya beroperasi saat Anda menggunakan konektor dengan Spark SQL, dan bukan dengan API. MapReduce

Pertimbangan saat menggunakan konektor DynamoDB dengan Apache Hive

Menyetel jumlah maksimum mapper

  • Jika Anda menggunakan SELECT kueri untuk membaca data dari tabel Hive eksternal yang memetakan ke DynamoDB, jumlah tugas peta di EMR Tanpa Server dihitung sebagai total throughput baca yang dikonfigurasi untuk tabel DynamoDB, dibagi dengan throughput per tugas peta. Throughput default per tugas peta adalah 100.

  • Pekerjaan Hive dapat menggunakan jumlah tugas peta di luar jumlah maksimum kontainer yang dikonfigurasi per aplikasi EMR Tanpa Server, tergantung pada throughput baca yang dikonfigurasi untuk DynamoDB. Selain itu, kueri Hive yang berjalan lama dapat menggunakan semua kapasitas baca yang disediakan dari tabel DynamoDB. Ini berdampak negatif pada pengguna lain.

  • Anda dapat menggunakan dynamodb.max.map.tasks properti untuk menetapkan batas atas untuk tugas peta. Anda juga dapat menggunakan properti ini untuk menyetel jumlah data yang dibaca oleh setiap tugas peta berdasarkan ukuran wadah tugas.

  • Anda dapat mengatur dynamodb.max.map.tasks properti di tingkat kueri Hive, atau dalam hive-site klasifikasi start-job-run perintah. Nilai ini harus lebih besar atau sama dengan 1. Saat Hive memproses kueri Anda, pekerjaan Hive yang dihasilkan menggunakan tidak lebih dari nilai dynamodb.max.map.tasks saat membaca dari tabel DynamoDB.

Menyetel throughput tulis per tugas

  • Tulis throughput per tugas pada EMR Tanpa Server dihitung sebagai total throughput tulis yang dikonfigurasi untuk tabel DynamoDB, dibagi dengan nilai properti. mapreduce.job.maps Untuk Hive, nilai default properti ini adalah 2. Oleh karena itu, dua tugas pertama di tahap akhir pekerjaan Hive dapat menghabiskan semua throughput penulisan. Hal ini menyebabkan pembatasan penulisan tugas lain dalam pekerjaan yang sama atau pekerjaan lain.

  • Untuk menghindari pelambatan tulis, Anda dapat mengatur nilai mapreduce.job.maps properti berdasarkan jumlah tugas di tahap akhir atau throughput tulis yang ingin Anda alokasikan per tugas. Tetapkan properti ini dalam mapred-site klasifikasi start-job-run perintah pada EMR Serverless.