hadoop 操作 hdfs

来源:互联网 发布:mac软件卸载不掉 编辑:程序博客网 时间:2024/05/17 02:51
 package com.picc.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URI;import java.net.URL;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;import org.apache.hadoop.fs.Path;public class UrlCat {   static{       URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());   }   public static void main(String[] args) {       InputStream in =null;        try {//new FileInputStream("/home/liucheng/file/student.txt");            in=  new URL("hdfs://localhost:9000/user/liucheng/input/student.txt").openStream();        }  catch (IOException e) {            e.printStackTrace();        }        BufferedReader read = new BufferedReader(new InputStreamReader(in));        String line=null;        try {            while((line=read.readLine())!=null){                System.out.println("result:"+line.trim());            }        } catch (IOException e) {            e.printStackTrace();        }        try {            read.close();        } catch (IOException e) {            e.printStackTrace();        }    run("hdfs://localhost:9000/user/liucheng/input/student.txt");   }   public static void run(String hdfs){       Configuration conf = new Configuration();       InputStream in =null;        try {          FileSystem fs = FileSystem.get(URI.create(hdfs), conf);          in = fs.open(new Path(hdfs));          BufferedReader read = new BufferedReader(new InputStreamReader(in));            String line=null;            try {                while((line=read.readLine())!=null){                    System.out.println("result:"+line.trim());                }            } catch (IOException e) {                e.printStackTrace();            }        } catch (IOException e) {            e.printStackTrace();        }finally{            try {                in.close();            } catch (IOException e) {                e.printStackTrace();            }        }   }}

示例是读取hdfs 的Input 文件夹下的student.txt 文件。示例。
java 操作 hdfs 
 package com.picc.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URI;import java.net.URL;import java.util.Arrays;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataInputStream;import org.apache.hadoop.fs.FileStatus;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.FileUtil;import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;import org.apache.hadoop.fs.Path;public class UrlCat {   static{       URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());   }      public static void main(String[] args) {         run("hdfs://localhost:9000/user/liucheng/input/file01.txt");    //doubleCat("hdfs://localhost:9000/user/liucheng/input/student.txt");    //   statusTest("hdfs://localhost:9000/user/liucheng/input");   }   public static void run(String hdfs){       Configuration conf = new Configuration();       InputStream in =null;        try {          FileSystem fs = FileSystem.get(URI.create(hdfs), conf);          in = fs.open(new Path(hdfs));          BufferedReader read = new BufferedReader(new InputStreamReader(in));            String line=null;            try {                while((line=read.readLine())!=null){                    System.out.println("result:"+line.trim());                }            } catch (IOException e) {                e.printStackTrace();            }        } catch (IOException e) {            e.printStackTrace();        }finally{            try {                in.close();            } catch (IOException e) {                e.printStackTrace();            }        }   }   //FSDataInputStream extents DataInputStream extents InputStream   /**    *  其实doubleCat 和 getInputStreamtoText 方法需要放到一起    *  在有异常时,把位置保存到一个properties文件中    * @param hdfs    */   public static void doubleCat(String hdfs){       Configuration conf = new Configuration();       FSDataInputStream fsdis =null;       try {        FileSystem fs = FileSystem.get(URI.create(hdfs),conf);        fsdis= fs.open(new Path(hdfs));        long rs = fsdis.skip(1000);//跳过1000个位置        fsdis.seek(rs);//查找rs的位子        String result = getInputStreamtoText(fsdis);        System.out.println("result:"+result);    } catch (IOException e) {        e.printStackTrace();    }finally{        if(fsdis!=null){            try {                fsdis.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }   }   /**    * inputStream to Text    * @param in    * @return    */   public static String getInputStreamtoText(InputStream in ){       BufferedReader read = new BufferedReader(new InputStreamReader(in));        String line=null;        StringBuffer result=new StringBuffer();        try {            while((line=read.readLine())!=null){            //    System.out.println("result:"+line.trim());                String lineSeparator =System.getProperty("line.separator");                result.append(line).append(lineSeparator);                            }        } catch (IOException e) {            e.printStackTrace();        }finally{            try {                in.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return result.toString();   }   public static void statusTest(String url){       Configuration conf = new Configuration();     try {        FileSystem fs =   FileSystem.get(URI.create(url), conf);        Path [] paths = new Path[url.length()];        for(int i=0;i<paths.length;i++){//            paths[i]=new Path[String.url];            FileStatus [] filestatus = fs.listStatus(paths[i]);            Path [] listedPaths = FileUtil.stat2Paths(filestatus);            for(Path p:listedPaths){                System.out.println(p);            }        }         // /tmp/hadoop-liucheng/dfs/name/current/edits    //    bin/mysqld    } catch (IOException e) {        e.printStackTrace();    }   }   }