下面来回顾回顾,出现的尴尬问题:
这个问题,出现的原因就是从hdfs下载到本地,不能后面直接跟一个目录,必须记得写一个名。
@Test public void getFileHdfs1() throws URISyntaxException, IOException, InterruptedException { Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(new URI("hdfs://bigdata111:9000"),conf,"root"); FSDataInputStream fis = fs.open(new Path("/123")); FileOutputStream fos = new FileOutputStream(new File("D:\\input\\test\\aa.txt")); IOUtils.copyBytes(fis,fos,1024*5,true); System.out.println("下载成功"); }
/** * hdfs文件的定位读取第一个block块到windows中 * * */ @Test public void readFileHdfs1() throws URISyntaxException, IOException, InterruptedException { Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(new URI("hdfs://bigdata111:9000"),conf,"root"); //从hdfs创建输入流 FSDataInputStream fis=fs.open(new Path("/Python素材.rar")); //创建输出流 FileOutputStream fos=new FileOutputStream(new File("D:\\input\\test\\ss1.txt")); //对接流 byte[] buff = new byte[1024]; //1kb,然后是循环1024*128=128M for (int i=0;i<128*1024;i++){ fis.read(buff); fos.write(buff); } IOUtils.closeStream(fis); IOUtils.closeStream(fos); } /** * hdfs文件的定位读取第二个block块到windows中 */ @Test public void readFileHdfs2() throws URISyntaxException, IOException, InterruptedException { Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(new URI("hdfs://bigdata111:9000"),conf,"root"); //从hdfs创建输入流 FSDataInputStream fis=fs.open(new Path("/Python素材.rar")); //创建输出流 FileOutputStream fos=new FileOutputStream(new File("D:\\input\\test\\ss2.txt")); //对接流 byte[] buff = new byte[1024]; //定义偏移量 fis.seek(128*1024*1024); //1kb,然后是循环1024*128=128M for (int i=0;i<128*1024;i++){ fis.read(buff); fos.write(buff); } IOUtils.closeStream(fis); IOUtils.closeStream(fos); fis.close(); } /** * hdfs文件的定位读取第三个块到windows中 * * */ @Test public void readFileHdfs3() throws URISyntaxException, IOException, InterruptedException { Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(new URI("hdfs://bigdata111:9000"),conf,"root"); //从hdfs创建输入流 FSDataInputStream fis=fs.open(new Path("/Python素材.rar")); //创建输出流 FileOutputStream fos=new FileOutputStream(new File("D:\\input\\test\\ss3.txt")); //对接流 byte[] buff = new byte[1024]; //定义偏移量 fis.seek(128*1024*1024*2); IOUtils.copyBytes(fis, fos, 1024); IOUtils.closeStream(fis); IOUtils.closeStream(fos); fs.close(); }
结果:
在cmd中文件合并:
保持学习,保持饥饿
————Jackson_MVP