java代码
@Test
public void copyToLocalFile() throws Exception{
//获取文件系统
Configuration configuration = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://hadoop1:8020"), configuration, "root");
//执行下载操作
fs.copyToLocalFile( new Path("/test/data.txt"), new Path("d:/1.txt"));
//关闭资源
fs.close();
}
执行可能报错
报错如下:
2021-11-12 19:50:48,749 DEBUG [org.apache.hadoop.fs.FileSystem] - NativeIO.createDirectoryWithMode error, path = C:\Users\mym\Desktop\下载文件2, mode = 755
183: 当文件已存在时,无法创建该文件。
解决: 用下面高级用法
高级用法
@Test
public void copyToLocalFile2() throws Exception{
//获取文件系统
Configuration configuration = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://hadoop1:8020"), configuration, "root");
//执行下载操作
/*
第一个参数:是否删除hdfs的文件
最后一个参数:是否作为本地文件系统。有时必须设置true才能下载,会创建.1.txt.crc文件
*/
fs.copyToLocalFile( false,new Path("/test/data.txt"), new Path("d:/1.txt"),true);
//关闭资源
fs.close();
}