Pertanyaan Pengecil berhenti bekerja pada 66,68% saat menjalankan kueri bergabung dengan HIV


Mencoba bergabung dengan 6 tabel yang memiliki 5 juta baris kira-kira dalam setiap tabel. Mencoba untuk bergabung di nomor akun yang diurutkan dalam urutan menaik pada semua tabel. Tugas peta berhasil diselesaikan dan reduksi berhenti bekerja pada 66,68%. Opsi-opsi yang dicoba seperti meningkatkan jumlah pengecil dan juga mencoba opsi lain yang mengatur hive.auto.convert.join = true; dan atur hive.hashtable.max.memory.usage = 0.9; dan atur hive.smalltable.filesize = 25000000L; tetapi hasilnya sama. Mencoba dengan sejumlah kecil catatan (seperti 5000 baris) dan kueri berfungsi dengan sangat baik.

Tolong sarankan apa yang bisa dilakukan di sini untuk membuatnya bekerja.


4
2018-01-05 12:30


asal


Jawaban:


Pengecil pada 66% mulai melakukan pengurangan yang sebenarnya (0-33% adalah shuffle, 33-66% adalah semacam). Dalam bergabung dengan sarang, peredam melakukan produk Cartesian antara dua set data.

Saya akan menebak bahwa setidaknya ada satu kunci asing yang sering muncul di semua set data. Perhatikan nilai NULL dan default.

Misalnya, dalam sebuah gabung, bayangkan kunci "abc" muncul sepuluh kali di masing-masing dari enam tabel (10 ^ 6). Itu adalah satu juta catatan output untuk satu kunci itu. Jika "abc" muncul 1000 kali dalam satu tabel, 1000 di lain, 1000 di satu tabel, lalu dua kali di tiga tabel lainnya, Anda mendapatkan 8 miliar rekaman (1000 ^ 3 * 2 ^ 3). Anda dapat melihat bagaimana ini keluar dari tangan. Saya kira setidaknya ada satu kunci yang menghasilkan sejumlah besar catatan output.

Ini adalah praktik umum yang baik untuk dihindari dalam RDBMS di luar Hive juga. Melakukan banyak gabungan internal antara banyak-ke-banyak hubungan dapat membawa Anda dalam banyak masalah.


10
2018-01-05 20:43



Untuk men-debug ini sekarang, dan di masa depan, Anda bisa menggunakan JobTracker untuk menemukan dan memeriksa log untuk Reducer (s) yang dimaksud. Anda kemudian dapat menginstruksikan operasi mengurangi untuk mendapatkan pegangan yang lebih baik untuk apa yang terjadi. hati-hati jangan sampai meledakkannya dengan penebangan, tentu saja! Coba cari jumlah input rekaman untuk operasi pengurangan misalnya.


0
2018-01-07 01:12