Ma’lumotlar kommunikatsiyasi” fanidan tayyorlagan amaliy mashg‘ulot ishlari topshirdi: M. A. Akbarova Qabul qildi: O. I. Ergashev Farg‘ona 023 amaliy mashg‘ulot mavzu: Java-da MapReduce dasturi Ishning maqsadi: Displey funksiyasi


Download 0.51 Mb.
bet7/11
Sana17.06.2023
Hajmi0.51 Mb.
#1547427
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
2-deadline. 7-12 (2)

AMALIY MASHG‘ULOT-10


Mavzu: Hadoop maʼlumotlarini URL orqali oʻqing


Ishning maqsadi: Hadoop URL sxemasini tanib olishni o'rganish hdfs .
Hadoop fayl tizimidan faylni o'qishning oson usullaridan biri - Java obyekti yordamida ma'lumotlar o'qiladigan oqimni ochish. java. net.URL. Umumiy idioma quyidagicha ko'rinadi:

Hadoop URL sxemasini tanib olish uchun Java dasturi uchun hdfs , siz qo'shimcha ish qilishingiz kerak. Buning uchun URL manzilida setURLStreamHandlerFactory usulini chaqiring FsUrlStreamHandlerFactory misoli bilan . Usul har bir VM uchun faqat bir marta chaqirilishi mumkin, shuning uchun u odatda statik blokda bajariladi. Bu cheklov shuni anglatadiki, agar dasturingizning boshqa qismi (masalan, siz nazorat qilmaydigan uchinchi tomon komponenti) setURLStreamHandlerFactory ga qo'ng'iroq qilsa , siz Hadoop ma'lumotlarini o'qish uchun ushbu yondashuvdan foydalana olmaysiz . Keyingi bo'limda muqobil yechim muhokama qilinadi.
3.1 ro'yxati Hadoop fayl tizimlaridan standart chiqishga fayllarni chop etuvchi dasturni ko'rsatadi. ( Unix cat buyrug'iga o'xshash).
Hadoop bilan birga kelgan qulay IOUtils sinfidan finally bo'limidagi oqimni yopish, shuningdek kirish va chiqish ¬oqimlari orasidagi baytlarni nusxalash uchun foydalanamiz ( System . out . bizning holatlarimizda). copyBytes usulining oxirgi ikki argumentida nusxa ko'chirish uchun ishlatiladigan bufer hajmi o'tkaziladi va nusxa ko'chirish tugallanganda oqimni yopish uchun bayroq. Biz kirish oqimini o'zimiz yopamiz, shuning uchun Tizim . tashqariga yopish kerak emas.
Fayl tizimi yordamida ma'lumotlarni o'qish API
Oldingi bo'limda aytib o'tilganidek, ba'zida setURLStream - HandlerFactory -ga qo'ng'iroq qilish imkoniyati mavjud ilovada mumkin emas. Bunday holda, siz FileSystem dan foydalanib fayl uchun kirish oqimini ochishingiz kerak .
Hadoop fayl tizimidagi fayl Hadoop ob'ekti bilan ifodalanadi Yo'l (java.io File dan ko'ra., chunki ikkinchisining semantikasi mahalliy fayl tizimi bilan juda chambarchas bog'langan). Yo'l ob'ekti URI sifatida qarash mumkin Hadoop fayl tizimida ( masalan , hdfs: //localhost/user/tom/quangle.txt ) _ _ _ _ _ _
FileSystem - umumiy API fayl tizimi, shuning uchun birinchi qadam biz foydalanmoqchi bo'lgan fayl tizimining namunasini olishdir - HDFS bizning holatimizda. FileSystem namunasini olish uchun bir nechta statik zavod usullari mavjud :
Konfiguratsiya ob'ektida konfiguratsiya fayllarida belgilangan mijoz yoki server konfiguratsiyasini inkapsullaydi (masalan, conf / core - sayt .xml ) . Birinchi usul standart fayl tizimini qaytaradi ( conf/ core - site.xml faylida ko'rsatilgan yoki o'rnatilmagan bo'lsa, mahalliy standart fayl tizimi) . Ikkinchi usul berilgan URI ning sxemasi va vakolatidan fayl tizimini aniqlaydi ; agar sxema URIda bo'lsa ko'rsatilmagan, standart fayl tizimi ishlatiladi. Uchinchi usul fayl tizimi obyektini berilgan foydalanuvchi nomidan oladi, bu xavfsizlik kontekstida muhim (qarang: “Xavfsizlik”, 419-bet ).
Ba'zi hollarda siz mahalliy fayl tizimining namunasini olishingiz kerak bo'ladi. Bunday holda, getLocal () yordamchi usulidan foydalanishingiz mumkin:

Fayl uzunligidan kattaroq joyda seek() ni chaqirish IOExceptionni chiqaradi. Oqimni joriy holatdan tashqari nuqtaga olib boradigan java.io.InputStream sinfining skip() usulidan farqli o'laroq, seek() usuli fayldagi ixtiyoriy mutlaq pozitsiyaga o'tish imkonini beradi.
Listing 3.3 Listing 3.2 ning kengaytmasi bo'lib, faylni standart chiqishga ikki marta yuboradi va birinchi marta faylning boshida joylashgan.
Read () usuli uzunligigacha o'qiydi baytlar berilgan fayl pozitsiyasidan ofset ofsetidagi pozitsiyaga buferda . _ Qaytish qiymati haqiqatda o'qilgan baytlar sonini o'z ichiga oladi ; qo'ng'iroq qilayotganda, siz qabul qilingan qiymatni tekshirishingiz kerak, chunki u uzunlikdan kamroq bo'lishi mumkin . readFully () usullari uzunlik buferiga o'qiladi bayt (yoki bufer . uzunlik bufer bayt massivini qabul qiluvchi versiya uchun ); agar bu faylning oxiriga yetsa, EOFException yuboriladi .
Ushbu usullarning barchasi joriy fayl ofsetini saqlaydi va ish zarralari uchun xavfsizdir. Ular faylning asosiy mazmunini o'qish paytida faylning boshqa qismlariga (masalan, metama'lumotlarga) murojaat qilish uchun qulay mexanizmni ta'minlaydi.
Nihoyat, shuni yodda tutingki, seek () qo'ng'irog'i nisbatan qimmat va ehtiyotkorlik bilan ishlatilishi kerak. Ilovadagi ma'lumotlarga kirish modeli bir nechta joylashishni aniqlash operatsiyalariga emas, balki oqimli ma'lumotlarni qayta ishlashga asoslangan bo'lishi kerak (masalan, MapReduce yordamida ) .

Download 0.51 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling