JavaHere's Blogs π
ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
Youtube: youtube.com/@JavaIsHere Linkedin: linkedin.com/in/javokhirakramjonov Bored? @javohirakramblog Contact: @javahere_admin
ΠΡΡΡΠΈΠ΅ ΠΏΠΎΡΡΡ
Π·Π° ΡΡΠΈ ΠΌΠ΅ΡΡΡΠ°Optimizatsiya 2 (72h -> 1h) Pipeline bor. Bu pipeline har kuni bir kunlik ma'lumotlarni process qilib turishi kerak edi. Har safar 8 soat run bo'lardi. U bir databasedan bir nechta table larni olib, birlashtirib, filterlab, boshqa bir databasedagi bir table ga yozadi. Menga yangi bir column qo'shib uni kerakli ma'lumot bilan to'ldirishimni so'radi. Shunday qildim, code ham review va approve bo'ldi. Lekin kod pre-prod environmentga yetganda, naqd 72 soatdan ko'proq ishlab, time out bo'ldi. Sababi, menga kerakli ma'lumotni query qilish uslubim xato bo'lgan ekan. Qanday xato? Agar kerakli ma'lumot juda katta bo'lsa uni bir dona query orqali olib kelmasdan, alohida kichik pipeline bilan olib kelinadi. Menga kerakli ma'lumot kichik (bir necha yuz megabayt) bo'lgani uchun uni batch emas streaming orqali, ya'ni, bitta queryda olib kelinadigan qildik. Shunda 72h -> 25h bo'ldi. Lekin bu ham yaxshi natija emasdi. Hammani o'zini ishi bor, buniyam kimdir to'g'irlash kerak. 2 ta yo'limiz bor edi, 1. Kompyuterlarni kuchaytirish (cpu, ram) 2. Kodni optimizatsiya qilish Mendan kodni optimizatsiya qilishimni so'radi. Muammo - menga kerakli bir necha yuz megabaytli data bilan bir necha terabayatli datani join qilishda edi. Shu qismini o'zi 17soat olayotgandi. Men qilgan yechim: Join qilish o'rniga, haligi kichik datani hashmapga soldim. Terabayt datani parallel yurib chiqib, har bir row uchun o'ziga mos datani hashmapdan olib to'ldirib chiqdim. Qarasam huddi shunday ishni qilishim mumkin bo'lgan yana bir joy bor ekan. Uniyam shunday qildim. Natija: Endi pipeline ~1soat da ishni tugatyabdi, hamma xursand. Olovni yondirgan menman. Lekin ayb menga yuklanmaydi, sababi jamoam bu kodni review qilib tasdiqlagan. Endi ayb hammaniki. Optimizatsiyani men qildim, bu jamoaniki emas. Qiziq vaziyat. Bu ishni qilish davomida Partitioning, Shuffling degan tushunchalar bilan tanishdim. Balkim bular haqida alohida post yozarman. Shunday qilib: 72h -> 1h. Zo'r natija. #tajriba JavaHere 17.06.2026 Ishxona, Polsha
Join task (updated) Endigi qilishim kerak boβlgan ish: Table A va B. A table da 50 million atrofida row. B table da 26 milliard atrofida row. A tabledagi X columnni B tabledagi X column yordamida toβldirishim kerak. A - aID B - bID Menda C mapping table bor, yani (aID, bID). Qiziq task. Tugatsam qanday qilganimni aytaman. #tajriba JavaHere 23.07.2026 Ishxona, Polsha