hadoop3.x HDFS java上传文件(设置副本参数)

java 代码

@Test
public void copyFromLocalFile() throws Exception {
    //获取文件系统
    Configuration config = new Configuration();
    FileSystem fs = FileSystem.get(new URI("hdfs://hadoop1:8020"), config, "root");
    //上传文件,路径不存在,自动创建
    fs.copyFromLocalFile(new Path("d:/data.txt"), new Path("/test/data.txt"));
    System.out.println("ok");
    //关闭
    fs.close();
}

web查看结果

设置参数

比如:设置文件的副本数量,如果不设置,那么使用的是 hadoop 服务器 hdfs-site.xml 中的配置

如果设置:有以下2种方式

  • 本工程创建 hdfs-site.xml 配置文件(优先级:低)
  • java代码设置参数(优先级:高)

hdfs-site.xml(优先级:低)

在 resources 目录下创建 hdfs-site.xml,工程目录结构如下:

内容如下:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>

表示上传的文件有2个副本

执行java代码

java代码设置参数(优先级:高)

@Test
public void copyFromLocalFile2() throws Exception {
    //获取文件系统
    Configuration config = new Configuration();
    //==================设置文件副本数量=================
    config.set("dfs.replication", "2");

    FileSystem fs = FileSystem.get(new URI("hdfs://hadoop1:8020"), config, "root");
    //上传文件,路径不存在,自动创建
    fs.copyFromLocalFile(new Path("d:/data.txt"), new Path("/test/data2.txt"));
    System.out.println("ok");
    //关闭
    fs.close();
}

原文出处:/show_1IX2x3UOE3Mi.html