hadoop入门(10):hdfs的java编程-文件的上传与下载

上传文件

方式一:常规流程

    @Test
    public void uploadFile2Hdfs() throws IOException {
        // configuration
        Configuration configuration = new Configuration();
        // 设置namenode
        configuration.set("fs.defaultFS","hdfs://node001:8020");
        // filesystem
        FileSystem fileSystem = FileSystem.get(configuration);

        // 拷贝文件
        fileSystem.copyFromLocalFile(new Path("pom.xml"),new Path("/sjj/test"));
        // 释放资源
        fileSystem.close();
    }

hadoop入门(10):hdfs的java编程-文件的上传与下载

方式二:I/O上传文件

    @Test
    public void putFile2Hdfs() throws URISyntaxException, IOException, InterruptedException {
        // 获取文件系统
        Configuration configuration = new Configuration();
        FileSystem fileSystem = FileSystem.get(new URI("hdfs://node001:8020"), configuration, "sjj");
        // 创建输入流
        FileInputStream fis = new FileInputStream(new File("pom.xml"));
        // 获取输入流,父目录不存在会自动创建
        FSDataOutputStream fos = fileSystem.create(new Path("/sjj/test/pom.xml"));
        // 流对拷 org.apache.commons.io.IOUtils
        IOUtils.copy(fis,fos);
        // 释放资源
        IOUtils.closeQuietly(fos);
        IOUtils.closeQuietly(fis);
        fileSystem.close();
    }

下载文件

方式一:常规流程

    @Test
    public void downloadFileFromHdfs() throws IOException {
        // configuration
        Configuration configuration = new Configuration();
        // 设置namenode
        configuration.set("fs.defaultFS","hdfs://node001:8020");
        // filesystem
        FileSystem fileSystem = FileSystem.get(configuration);

        // 下载文件
        fileSystem.copyToLocalFile(new Path("/sjj/test/pom.xml"),new Path("/Users/soutsukyou/Desktop/ForHadoop/"));
        // 释放资源
        fileSystem.close();
    }

hadoop入门(10):hdfs的java编程-文件的上传与下载

方式二:I/O下载文件

    @Test
    public void getFileFromHdfs() throws URISyntaxException, IOException, InterruptedException {
        // 获取文件系统
        Configuration configuration = new Configuration();
        FileSystem fileSystem = FileSystem.get(new URI("hdfs://node001:8020"), configuration, "sjj");
        // 创建输入流
        FSDataInputStream fis = fileSystem.open(new Path("/sjj/test/pom.xml"));
        // 获取输出流
        FileOutputStream fos = new FileOutputStream("/Users/soutsukyou/Desktop/ForHadoop/");
        // 流对拷 org.apache.commons.io.IOUtils
        IOUtils.copy(fis,fos);
        // 释放资源
        IOUtils.closeQuietly(fos);
        IOUtils.closeQuietly(fis);
        fileSystem.close();
    }

其它操作

// 删除文件
fileSystem.delete();
// 重命名文件
fileSystem.rename();
上一篇:NETTY基础知识


下一篇:springboot+jersey