Java操作HDFS

Java操作HDFS

`java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.fs.permission.FsPermission;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public class TestHdfsApi {
    /**
     * 使用java操作HDFS
     * 创建文件夹,上传文件,下载文件,列出日志,查看block块的信息
     *
     * @param args
     */
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();//org.apache.hadoop.conf
        //配置主节点信息
        conf.set("fs.defaultFS","hdfs://master01:9000");
        //通过hadoop提供的FileSystem抽象类中的方法,可以根据我们自己提供的配置来获取操作hdfs的对象
        FileSystem fs = FileSystem.get(conf);

        boolean b = fs.mkdirs(new Path("/shujia/bigdata19/"));
        System.out.println(b);

        //上传文件-本地文件路径写绝对路径
//        fs.copyFromLocalFile(new Path("F:\\software\\IdeaProjects\\bigdata19-project\\bigdata19-hadoop\\src\\data\\students.txt"),new Path("/shujia/bigdata19/students.txt"));

        //下载文件
//        fs.copyToLocalFile(new Path("/shujia/bigdata19/students.txt"),new Path("F:\\software\\IdeaProjects\\bigdata19-project\\bigdata19-hadoop\\src\\data\\students2.txt"));

        //列出当前目录下所有文件
        RemoteIterator<locatedfilestatus> listFiles = fs.listFiles(new Path("/shujia/bigdata19"), true);
        while (listFiles.hasNext()){
            LocatedFileStatus fileStatus = listFiles.next();
            BlockLocation[] blockLocations = fileStatus.getBlockLocations();
            for (BlockLocation location : blockLocations) {
                String[] names = location.getNames();
                String s = Arrays.toString(names);
                System.out.println(s);
            }
            //&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x6240;&#x5C5E;&#x7528;&#x6237;
            System.out.println(fileStatus.getOwner());
            //&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x7684;&#x540D;&#x5B57;
            String name = fileStatus.getPath().getName();
            System.out.println(name);
            //&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x7684;&#x6743;&#x9650;
            FsPermission permission = fileStatus.getPermission();
            System.out.println(permission);
            //&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x6700;&#x540E;&#x4FEE;&#x6539;&#x7684;&#x65F6;&#x95F4;
            long accessTime = fileStatus.getAccessTime();
            System.out.println(accessTime);
            Date date = new Date(accessTime);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(sdf.format(date));

        }

        //&#x91CA;&#x653E;&#x8D44;&#x6E90;
        fs.close();

    }
}
</locatedfilestatus>

Original: https://www.cnblogs.com/bfy0221/p/16614654.html
Author: 伍点
Title: Java操作HDFS

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/684184/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球