บทความนี้ส่วนใหญ่ศึกษาวิธีการเข้าถึงของ Java API ของ HDFS รหัสเฉพาะแสดงอยู่ด้านล่างและมีความคิดเห็นโดยละเอียด
ความเร็วค่อนข้างเร็วเมื่อเร็ว ๆ นี้ เมื่อคุณมีเวลาคุณสามารถห่อสิ่งนี้ได้
นำเข้า java.io.ioException; นำเข้า java.net.uri; นำเข้า java.net.urisyntaxexception; นำเข้า org.apache.hadoop.conf.configuration; นำเข้า org.apache.hadoop.fs.blocklocation; org.apache.hadoop.fs.filesystem; นำเข้า org.apache.hadoop.fs.fileutil; นำเข้า org.apache.hadoop.fs.path; นำเข้า org.apache.hadoop.hdfs.distributedfilesystem;
/** * รับระบบไฟล์ hdfs * @return * @throws ioexception * @throws urisyntaxexception */ระบบไฟล์คงที่สาธารณะ getFilesystem () พ่น IOException, urisyntaxexception {// อ่านค่าเริ่มต้นการกำหนดค่า System // ระบบไฟล์ fs = filesystem.get (conf); // ที่อยู่ระบบไฟล์ที่ระบุ uri uri = uri ใหม่ ("hdfs: // hy: 9000"); // ส่งคืนระบบไฟล์ที่ระบุ // หากคุณกำลังทดสอบในเครื่อง โมฆะคงที่ mkdir () พ่นข้อยกเว้น {// รับไฟล์ระบบไฟล์ระบบไฟล์ fs = getFilesystem (); // สร้างไดเรกทอรีไฟล์ fs.mkdirs (เส้นทางใหม่ ("hdfs: // hy: 9000/hy/weibo"); ข้อยกเว้น {// รับ File System FileSystem FS = GetFilesYstem (); // ลบไฟล์หรือไดเรกทอรีไฟล์ fs.delete (เส้นทางใหม่ ("hdfs: // hy: 9000/hy/weibo"), จริง); // รีลีสทรัพยากร fs.close ();}/** ระบบไฟล์ fs = getFileSystem (); // แสดงรายการไดเรกทอรีเนื้อหา filestatus [] สถานะ = fs.liststatus (เส้นทางใหม่ ("hdfs: // hy: 9000/hy/")); // รับเส้นทางไฟล์ทั้งหมดในเส้นทางไดเรกทอรี {system.out.println (path);} // ปล่อยทรัพยากร fs.close ();}/** * อัปโหลดไฟล์ไปยัง hdfs * @throws ข้อยกเว้น */โมฆะสาธารณะคงที่ copytohdfs () พ่นพาพาพาพาวต์ {// รับไฟล์ เส้นทาง ("/home/hadoop/temp.jar"); // หากคุณต้องการทดสอบใน windows คุณต้องเปลี่ยนเป็นเส้นทางใต้ windows ตัวอย่างเช่น e: //temp.jarpath srcpath = เส้นทางใหม่ ("e: //temp.jar"); fs.copyfromlocalfile (srcpath, dstpath); // ปล่อยทรัพยากร fs.close ();}/*** ดาวน์โหลดไฟล์จาก hdfs* @throws Exception*/โมฆะสาธารณะคง เส้นทาง ("hdfs: // hy: 9000/hy/weibo/temp.jar"); // เส้นทางเริ่มต้น, ค่าเริ่มต้นคือ linux // หากทดสอบภายใต้ windows คุณต้องเปลี่ยนเป็นเส้นทางภายใต้ windows เช่น c: // user/Andy/desktop/path dstpath = เส้นทางใหม่ ("//") ทรัพยากร fs.close ();}/*** รับข้อมูลเกี่ยวกับคะแนนคลัสเตอร์ HDFS* @throws Exception*/โมฆะสาธารณะคงที่ gethdfsnodes () โยนข้อยกเว้น {// รับระบบไฟล์ระบบไฟล์ fs = getFilesystem (); datanodestats = hdfs.getDatanodestats (); // loop traversal สำหรับ (int i = 0; i <datanodestats.length; i ++) {system.out.println ("datanote_" + i + "_name:" + datanodestats [i] .gethostname (); ตำแหน่งของไฟล์ในคลัสเตอร์ HDFS * @throws Exception */โมฆะคงที่สาธารณะ getFileLocal () พ่นข้อยกเว้น {// รับระบบไฟล์ระบบไฟล์ fs = getFilesystem (); // เส้นทางพา ธ พา ธ = เส้นทางใหม่ ("hdfs: // hy: 9000/hy/weibo/temp.jar" fs.getFilestatus (path); // รับรายการตำแหน่งบล็อกตำแหน่ง blocklocation [] blocklocations = fs.getFileBlocklocations (filestatus, 0, filestatus.getlen ()); // ข้อมูลบล็อกเอาต์พุตของเอาต์พุตสำหรับ (int i = 0; blocklocations [i] .getHosts (); system.out.println ("block_" + i + "_location:" + โฮสต์ [0]);} // ปล่อยทรัพยากร fs.close ();}ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับวิธีการเข้าถึงของ HDFS Java API ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!