hadoop是如何实现把一个文件从hdfs下载到本地或者从本地上传到hdfs
流的操作。
本质-IO流操作
文件上传的操作:通过指定本地文件的输入流,进行数据的读取,然后将读取的数据通过指向hdfs的输出流,将数据写出。
文件的下载操作:通过指定hdfs的输入流,进行数据的读取,然后将读取的数据通过指向本地的输出流,将数据写出。
实现上传的操作(将电脑本地的一个文件上传到hdfs的一个目录中/bigdata下)
@Test
public void testIOUpload() throws IOException {
//实现上传的操作(将电脑本地的一个文件上传到hdfs的一个目录中)
FileInputStream in =
new FileInputStream(new File("E:\\大数据\\Hadoop生态\\1-Hadoop\\1.笔记\\尚硅谷大数据技术之高频面试题8.0.7(1).docx"));
FSDataOutputStream out = fs.create(new Path("/bigdata/尚硅谷大数据技术之高频面试题8.0.7(1).docx"));
IOUtils.copyBytes(in,out,conf);
IOUtils.closeStream(in);
IOUtils.closeStream(out);
}
@Before
public void init() throws Exception {
conf.set("dfs.replication","3");
fs=FileSystem.get(uri,conf,user);
}
@After
public void close() throws Exception {
fs.close();
}
下载文件:
将hdfs 中/bigdata/尚硅谷大数据技术之高频面试题8.0.7(1).docx文件下载到本地目录
实现流的对拷:
查看fs:
org.apache.hadoop.hdfs.DistributedFileSystem