美文网首页
(初级)HDFS的Java访问

(初级)HDFS的Java访问

作者: 呆老板 | 来源:发表于2017-07-24 15:03 被阅读0次

    package hdfs;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.IOException;

    import java.net.URI;

    import java.net.URISyntaxException;

    import org.apache.hadoop.conf.Configuration;

    import org.apache.hadoop.fs.FSDataInputStream;

    import org.apache.hadoop.fs.FSDataOutputStream;

    import org.apache.hadoop.fs.FileStatus;

    import org.apache.hadoop.fs.FileSystem;

    import org.apache.hadoop.fs.Path;

    import org.apache.hadoop.io.IOUtils;

    public class App2 {

    static final String PATH="hdfs://192.168.2.27:9000/hello";

    static final String DIR = "/d1";

    static final String FILE = "/d1/hello";

    public static void main(String[] args) throws IOException, URISyntaxException {

    //用户代码操作HDFS时,是直接调用FileSystem的子类完成的

    FileSystem fileSystem = getFileSystem();

    //创建文件夹 hadoop fs -mkdir

    //mkdir(fileSystem);

    //删除文件夹

    //remove(fileSystem);

    //上传文件

    //putData(fileSystem);

    //下载文件

    //getData(fileSystem);

    //浏览文件夹

    list(fileSystem);

    }

    private static void list(FileSystem fileSystem) throws IOException {

    FileStatus[] listStatus = fileSystem.listStatus(new Path("/"));

    for(FileStatus fileStatus  :listStatus){

    String isDir = fileStatus.isDir()?"文件夹":"文件";

    String permission = fileStatus.getPermission().toString();

    short replication = fileStatus.getReplication();

    long len = fileStatus.getLen();

    String path = fileStatus.getPath().toString();

    System.out.println(isDir+"\t"+permission+"\t"+replication+"\t"+len+"\t"+path);

    }

    }

    private static void getData(FileSystem fileSystem) throws IOException {

    FSDataInputStream in = fileSystem.open(new Path(FILE));

    IOUtils.copyBytes(in, System.out, 1024);

    }

    private static void putData(FileSystem fileSystem) throws IOException, FileNotFoundException {

    FSDataOutputStream out = fileSystem.create(new Path(FILE));

    FileInputStream in = new FileInputStream("E:/readme.txt");

    IOUtils.copyBytes(in, out, 1024,true);

    }

    private static void remove(FileSystem fileSystem) throws IOException {

    fileSystem.delete(new Path(DIR), true);

    }

    private static void mkdir(FileSystem fileSystem) throws IOException {

    fileSystem.mkdirs(new Path(DIR));

    }

    private static FileSystem  getFileSystem() throws IOException, URISyntaxException {

    return FileSystem.get(new URI(PATH), new Configuration());

    }

    }

    相关文章

      网友评论

          本文标题:(初级)HDFS的Java访问

          本文链接:https://www.haomeiwen.com/subject/wqebkxtx.html