通过`FileSystem.mkdirs(Path f)`可在 HDFS 上创建文件夹,其中 `f` 为文件夹的完整路径,`mkdirs()`方法可以实现创建多级目录。具体实现如下:
packagecom.xiaowang.hdfs; importjava.io.IOException; importjava.net.URI; importjava.net.URISyntaxException; importorg.apache.hadoop.conf.Configuration; importorg.apache.hadoop.fs.FileSystem; importorg.apache.hadoop.fs.Path; importorg.junit.After; importorg.junit.Before; importorg.junit.Test; publicclassHDFSDemo { FileSystemfs=null; // 每次执行单元测试前都会执行该方法publicvoidsetUp() throwsIOException, InterruptedException, URISyntaxException { Configurationconf=newConfiguration(); // 不需要配置“fs.defaultFS”参数,直接传入URI和用户身份,最后一个参数是安装Hadoop集群的用户,我的是“root”fs=FileSystem.get(newURI("hdfs://localhost:9000"), conf, "root"); } // 单元方法:创建目录publicvoidmkdir() throwsIllegalArgumentException, IOException { booleanmkdirs=fs.mkdirs(newPath("/123/1/2")); System.out.println(mkdirs); } // 每次执行单元测试后都会执行该方法,关闭资源publicvoidtearDown() { if (null!=fs) { try { fs.close(); } catch (IOExceptione) { e.printStackTrace(); } } } }
通过`FileSystem.copyFromLocalFile(Path src,Path dst)`可将本地文件上传到 HDFS 的指定位置上,其中 `src` 和 `dst` 均为文件的完整路径。具体实现如下:
//单元方法:上传文件publicvoidaddFileToHdfs() throwsIOException{ /** src:要上传的文件所在的本地路径* dst:要上传到HDFS的目标路径*/Pathsrc=newPath("/root/software/hadoop-2.7.7/README.txt"); Pathdst=newPath("/123"); //默认不删除本地源文件,覆盖HDFS同名文件fs.copyFromLocalFile(src, dst); }