使用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();
}
使用工具类简化后的代码:文章来源:https://www.toymoban.com/news/detail-601755.html
@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);
}
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();
}
使用工具类简化后的代码:文章来源地址https://www.toymoban.com/news/detail-601755.html
@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();
}
到了这里,关于【hadoop】使用Java API 上传下载数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!