zoukankan      html  css  js  c++  java
  • HDFS API操作

    package test;
    import org.apache.hadoop.fs.*;
    import org.apache.commons.io.IOUtils;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.MalformedURLException;
    import java.net.URI;
    import java.net.URL;
    import java.text.SimpleDateFormat;
    
    import org.apache.hadoop.conf.Configuration;
    
    public class Test extends FSDataInputStream {
        private static Configuration conf ;
        static{
            URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
        }
        public static void Config(){
            //配置文件
            conf= new Configuration();
            //conf.set("fs.defaultFS","hdfs://hadoop102:8020");//使用默认配置可连接成功
            conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
        }
    
        public static int ReadLine(String path) throws IOException {
            URI uri= URI.create("hdfs://hadoop102:8020/user/atguigu/txt2");
            FileSystem fs = FileSystem.get(uri,conf);
            Path file = new Path(uri);
            FSDataInputStream getIt = fs.open(file);
            BufferedReader d = new BufferedReader(new InputStreamReader(getIt));
    
            String content;// = d.readLine(); //读取文件一行
            if((content=d.readLine())!=null){
                System.out.println(content);
            }
            //  System.out.println(content);
            d.close(); //关闭文件
            fs.close(); //关闭hdfs
            return 0;
        }
    
        public static void PrintFile() throws MalformedURLException, IOException{
            String FilePath="hdfs://hadoop102:8020/user/atguigu/txt2";//读取的为HDFS目录:hadoop dfs -ls /查看HDFS目录
            InputStream in=null;
            in=new URL(FilePath).openStream();
            IOUtils.copy(in,System.out);
    
        }
        public static void lsDir(Configuration conf,String remoteDir){
            URI uri= URI.create("hdfs://hadoop102:8020/user");
            try(FileSystem fs=FileSystem.get(uri,conf)){
                Path dirPath=new Path(uri);
                //递归获取目录下的所有文件
                RemoteIterator<LocatedFileStatus>remoteIterator=fs.listFiles(
                        dirPath,true);
                //输出每个文件的信息
                while(remoteIterator.hasNext()){
                    FileStatus s= remoteIterator.next();
                    System.out.printf("路径:"+s.getPath().toString());
                    System.out.printf("权限:"+s.getPermission().toString());
                    System.out.println("大小:"+s.getLen());
                    //返回的是时间戳,转化为时间日期格式
                    Long timeStamp=s.getModificationTime();
                    SimpleDateFormat format=new SimpleDateFormat("" +
                            "yyyy-MM-dd HH:mm:ss");
                    String date=format.format(timeStamp);
                    System.out.printf("时间:"+date);
                    System.out.println();
                }
            }catch(IOException e) {
                e.printStackTrace();
            }
        }
        //创建文件
        public static void createFile() throws IOException {
            URI uri= URI.create("hdfs://hadoop102:8020/user/atguigu/new");
            FileSystem fs = FileSystem.get(uri,conf);
            fs.mkdirs(new Path(uri));
            fs.close();
        }
        //文件上传,注意权限问题
        public static void putFile() throws IOException {
            URI uri= URI.create("hdfs://hadoop102:8020/user/atguigu/");
            FileSystem fs = FileSystem.get(uri,conf);
            fs.copyFromLocalFile(false,false,new Path("F:\file2.txt"),new Path(uri));
            fs.close();
        }
        //文件下载 只写F:\会报错,要具体到文件
        public static void downloadFile() throws IOException {
            URI uri= URI.create("hdfs://hadoop102:8020/user/atguigu/txt2/");
            FileSystem fs = FileSystem.get(uri,conf);
            fs.copyToLocalFile(false,new Path(uri),new Path("F:\txt2.txt"),true);
            fs.close();
        }
        //文件删除
        public static void deleteFile() throws IOException {
            URI uri= URI.create("hdfs://hadoop102:8020/user/atguigu/file2.txt/");
            FileSystem fs = FileSystem.get(uri,conf);
            fs.delete(new Path(uri),false);
            fs.close();
        }
        public static void main(String[] arg) throws IOException{
            Test.Config();//配置conf
    //        Test.ReadLine("/user/hadoop/txt2");
    //        Test.PrintFile();//读取HDFS下的文件
    //        //递归读取目录下的所有文件信息
    //        lsDir(conf,"/");
    //        putFile();
    //        downloadFile();
    //        deleteFile();
            createFile();
        }
        public Test(InputStream in) {
            super(in);
        }
    }
  • 相关阅读:
    DC中为什么要用Uniquify?
    hdu 1596 find the safest road
    hdu2112 HDU Today
    hdu 2066 一个人的旅行
    poj 3026 Borg Maze
    poj 1979 Red and Black
    poj 1321 棋盘问题
    hdu 1010 Tempter of the Bone
    hdu 4861 Couple doubi
    codeforces584B Kolya and Tanya
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/15309406.html
Copyright © 2011-2022 走看看