当前位置:   article > 正文

【hadoop】使用Java API 上传下载数据_api上传下载

api上传下载

使用Java API 上传下载数据

使用Java API上传数据到HDFS

@Test
public void test1() throws Exception {
	//构造一个输入流,代表要上传的数据
	InputStream input = new FileInputStream("d:\\temp\\hadoop-2.7.3.tar.gz");
				
	//NameNodeProxies
	//NameNode

	//指定NameNode 地址
	Configuration conf = new Configuration();
	conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
		
	//创建HDFS的客户端 DistributedFileSystem
	FileSystem client = FileSystem.get(conf);
		
	//构造一个输出流,指向HDFS
	OutputStream output = client.create(new Path("/folder1/a.tag.gz"));
		
	//缓冲区
	byte[] buffer = new byte[1024];
	//长度
	int len = 0;
	while( (len = input.read(buffer)) > 0 ) {
		//写到输出流
		output.write(buffer, 0, len);
	}
		
	output.flush();
	output.close();
	input.close();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

使用工具类简化后的代码:

@Test
public void test2() throws Exception {
	//构造一个输入流,代表要上传的数据
	InputStream input = new FileInputStream("d:\\temp\\hadoop-2.7.3.tar.gz");
		
	//指定NameNode 地址
	Configuration conf = new Configuration();
	conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
		
	//创建HDFS的客户端
	FileSystem client = FileSystem.get(conf);
		
	//构造一个输出流,指向HDFS
	OutputStream output = client.create(new Path("/folder1/b.tag.gz"));
		
	//使用工具类简化
	IOUtils.copyBytes(input, output, 1024);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

HDFS数据的下载

@Test
public void test1() throws Exception{
	//构造一个输出流,指向本地
	OutputStream output = new FileOutputStream("d:\\temp\\x.tar.gz");
		
	//指定NameNode的地址
	Configuration conf = new Configuration();
	conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
		
	//创建HDFS的客户端
	FileSystem client = FileSystem.get(conf);
	//得到一个输入流
	InputStream input = client.open(new Path("/folder1/b.tag.gz"));
		
	//构造一个缓冲区
	byte[] buffer = new byte[1024];
	int len = 0;
	while((len=input.read(buffer)) > 0) {
		output.write(buffer, 0, len);
	}
		
	output.flush();
	output.close();
	input.close();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

使用工具类简化后的代码:

@Test
public void test1() throws Exception{
	//构造一个输出流,指向本地
	OutputStream output = new FileOutputStream("d:\\temp\\x.tar.gz");
		
	//指定NameNode的地址
	Configuration conf = new Configuration();
	conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
		
	//创建HDFS的客户端
	FileSystem client = FileSystem.get(conf);
	//得到一个输入流
	InputStream input = client.open(new Path("/folder1/b.tag.gz"));
		
	//构造一个缓冲区
	byte[] buffer = new byte[1024];
	int len = 0;
	while((len=input.read(buffer)) > 0) {
		output.write(buffer, 0, len);
	}
		
	output.flush();
	output.close();
	input.close();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/721817
推荐阅读
相关标签
  

闽ICP备14008679号