HDFSJava API操作

Posted 来自遥远的水星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFSJava API操作相关的知识,希望对你有一定的参考价值。

package com.atguigu.java;
import org.apache.hadoop.conf.Configuration;
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;

/**
 * 1.创建对象
 * 2.操作对应的流程
 * 3.关资源
 */
public class HDFSTest {
    FileSystem fs;
    Configuration conf;

    /**
     * 1.创建文件系统的对象
     *
     * 2.配置文件的顺序(最大的就是最后生效的)
     *      conf > 工程下的xxx-site.xml > 集群中xxx-site.xml > 集群中xxx-default.xml
     */
    @Before //在执行任意一个单元测试前执行该方法
    public void createObject() throws IOException, InterruptedException {
        //1.获取文件系统对象
        conf = new Configuration();
        //配置副本数 - 该配置只针对本次的操作有效。
//        conf.set("dfs.replication","1");
        /*
        final URI uri : hdfs的集群操作路径 - hdfs://hadoop102:9820
        final Configuration conf : 配置文件的对象
        final String user : 操作集群的用户
         */
        fs = FileSystem.get(URI.create("hdfs://hadoop102:9820"), conf, "atguigu");
    }


    @After //在执行完任意一个单元测试后再执行该方法
    public void colse(){
        //3.关资源
        if (fs != null) {
            try {
                fs.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


    /**
     *  上传
     * @throws IOException
     * @throws InterruptedException
     */
    @Test
    public void upload() throws IOException, InterruptedException {
        //2.具体的操作
        /**
         * boolean delSrc--是否删除源文件
         * boolean overwrite --如果目标地址如果已经存在和上传对象一样名字的文件是否覆盖
         *                   --如果为true,那么就覆盖。如果为false但名字又相同那么就抛异常
         * Path src--源文件
         * Path dst--目标地址
         */
        fs.copyFromLocalFile(false,false,
                new Path("D:\testfile\zhixingheyi.txt"),new Path("/"));
    }
}

以上是关于HDFSJava API操作的主要内容,如果未能解决你的问题,请参考以下文章

头歌Educoder云计算与大数据——实验五 Java API分布式存储

线程操作API

onActivityResult 未在 Android API 23 的片段上调用

导航到另一个片段时触发 API 调用

viewpager preload会调用api来获取数据吗?

VSCode自定义代码片段——git命令操作一个完整流程