7、HDFS输入输出流

文章目录

  • 1、HDFS IO文件写入
  • 2、HDFS IO文件读取
  • 3、HDFS IO定位读取

HDFS的输入输出流用于对HDFS文件进行字节的读取或写入。

1、HDFS IO文件写入

把windows本地文件通过HDFS的输出流写到HDFS文件中。

@Test
public void testHDFSIoOutput() throws IOException, InterruptedException, URISyntaxException {
	Configuration conf = new Configuration();
	FileSystem fs = FileSystem.get(new URI("hdfs://192.168.85.137:9000"), conf, "root");
	/*创建一个输入流,用于读取windows本地文件*/
	FileInputStream in = new FileInputStream("D:/tmp/test.txt");
	/*创建一个HDFS输出流,用于向HDFS文件中写入内容*/
	FSDataOutputStream out = fs.create(new Path("/user/lzj/test.txt"));
	/*字节拷贝*/
	IOUtils.copyBytes(in, out, conf);
	IOUtils.closeStream(in);
	IOUtils.closeStream(out);
	fs.close();
}

执行代码块,把本地D:/tmp/test.txt文件上传到了HDFS文件/user/lzj/test.txt中。

2、HDFS IO文件读取

把HDFS系统中的文件通过HDFS的输入流读取到本地磁盘中。

@Test
public void testHDFSIoInput() throws IOException, InterruptedException, URISyntaxException {
	Configuration conf = new Configuration();
	FileSystem fs = FileSystem.get(new URI("hdfs://192.168.85.137:9000"), conf, "root");
	/*创建HDFS输入流,用于从HDF文件读取内容S*/
	FSDataInputStream in = fs.open(new Path("/user/lzj/myfile.txt"));
	/*创建本地输出流,用于向windows本地文件写入内容*/
	FileOutputStream out = new FileOutputStream("D:/tmp/myfile.txt");
	IOUtils.copyBytes(in, out, conf);
	IOUtils.closeStream(in);
	IOUtils.closeStream(out);
	fs.close();
}

执行代码后,HDFS中的/user/lzj/myfile.txt文件被拷贝到了本地D:/tmp/myfile.txt。

3、HDFS IO定位读取

当HDFS执行输入流操作时,可以指定开始读取的位置。

	@Test
	public void testHDFSIoSeek() throws IOException, InterruptedException, URISyntaxException {
		Configuration conf = new Configuration();
		FileSystem fs = FileSystem.get(new URI("hdfs://192.168.85.137:9000"), conf, "root");
		/*创建HDFS输入流,用于从HDF文件读取内容S*/
		FSDataInputStream in = fs.open(new Path("/tools/jkd/jdk-1.8.0.jar"));
		/*定位输入数据起始位置*/
		in.seek(1024*1028);
		/*创建本地输出流,用于向windows本地文件写入内容*/
		FileOutputStream out = new FileOutputStream("D:/tools/jdk/jdk-1.8.0.jar.tmp");
		IOUtils.copyBytes(in, out, conf);
		IOUtils.closeStream(in);
		IOUtils.closeStream(out);
		fs.close();
	}

执行代码块后,HDFS开始从指定位置1024*1028复制文件到本地磁盘中。

你可能感兴趣的:(hadoop)