Hadoop笔记 Help

007-Java-API开发HDFS

Java HDFS API基本操作

通过Java HDFS API实现对文件系统的基本增删查改操作

package com.jxyy; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; public class GettingStart { // 创建配置对象 private Configuration conf; // 创建FileSystem对象 private FileSystem fs; @Before public void connectHDFS() throws IOException, InterruptedException, URISyntaxException { //配置hdfs连接 conf = new Configuration(); // 方法一:设置文件系统操作的对象为hdfs,并配置连接地址 // 该方法不实用uri,无法配置操作用户 // conf.set("fs.defaultFS", "hdfs://1.95.57.18:8020/"); // fs = FileSystem.get(conf); // 方法二: 该方法使用uri配置连接地址,可以配置操作用户 URI uri = new URI("hdfs://hadoop03:8020/"); conf.set("dfs.client.use.datanode.hostname", "true"); fs = FileSystem.get(uri, conf, "root"); } @Test // 创建文件夹操作, 完成后查看web页面是否创建/java-api目录 public void mkdir() throws IOException { String path = "/java-api"; Path dir = new Path(path); // 创建/java-api目录 // flag是结果标识符,判断操作是否成功 boolean flag = fs.mkdirs(dir); if (flag) { System.out.println("succeed!"); } } @Test // 上传文件或目录, 完成后查看web页面是否上传/hadoop.txt文件 // 1. 准备上传文件,在src文件夹下创建data文件夹并创建hadoop.txt文件,输入任意文本内容 public void upload() throws IOException { String src = "src/data/hadoop.txt"; // 本地文件路径 String dst = "/hadoop.txt"; // hdfs上的文件路径 // 2.通过该方法发现连接中的datanode地址为0.0.0.0:9866,因此需要先放行9866端口 // String s = fs.getConf().get("dfs.datanode.address"); // 3. 上传文件 fs.copyFromLocalFile(new Path(src), new Path(dst)); System.out.println("succeed!"); } @Test // 移动文件或目录,完成后查看web页面是否将hadoop.txt文件移动到/java-api目录中 public void move() throws IOException { String src = "/hadoop.txt"; String dst = "/java-api/hadoop.txt"; boolean flag = fs.rename(new Path(src), new Path(dst)); if (flag) { System.out.println("succeed!"); } } @Test // 重命名文件或目录,完成后查看web页面是否将/java-api/hadoop.txt改名为java.txt public void rename() throws IOException { String src = "/java-api/hadoop.txt"; String dst = "/java-api/java.txt"; boolean flag = fs.rename(new Path(src), new Path(dst)); if (flag) { System.out.println("succeed!"); } } @Test // 下载文件或目录,完成后查看本地src/data目录下是否成功下载java.txt public void download() throws IOException { String src = "/java-api/java.txt"; String dst = "src/data/java.txt"; fs.copyToLocalFile(new Path(src), new Path(dst)); System.out.println("succeed!"); } @Test // 查看目录下的所有文件 public void listDirs() throws IOException { FileStatus[] files = fs.listStatus(new Path("/")); // 得到列表数组,每个元素为文件对象 for (FileStatus file : files) { System.out.println(file); // 可以调用getPath()方法仅查看文件路径 } } @Test // 删除文件或目录,完成后查看web页面是否将/java-api/java.txt删除 public void delete() throws IOException { String src = "/java-api/java.txt"; boolean flag = fs.delete(new Path(src), true); if (flag) { System.out.println("succeed!"); } } @After public void closeHDFS() throws IOException { // 关闭hdfs连接 fs.close(); } }
Last modified: 10 October 2024