hadoop3.x HDFS java下载文件

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();
}

原文出处:/show_1IXaHCU0l7t.html