HDFS API 简单示例

package com.rabbit.hadoop.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;

import java.io.*;
import java.net.URI;

public class TestHDFS {

public Configuration config = null;
public FileSystem fs = null;

public void conn() throws IOException, InterruptedException {
config = new Configuration(true);
// FileSystem fs = FileSystem.get(config);
fs = FileSystem.get(URI.create("hdfs://mycluster"),config,"bigdata");
}

public void mkdir() throws IOException, InterruptedException {
this.conn();
Path path = new Path("/user/bigdata/idea");
fs.mkdirs(path);
this.close();
}

public void upload() throws IOException, InterruptedException {
this.conn();
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("E:/a.txt")));
Path path = new Path("/user/bigdata/idea/a.txt");
FSDataOutputStream fsos = fs.create(path);
IOUtils.copyBytes(bis,fsos,config,true);
this.close();
}

public void download() throws IOException, InterruptedException {
this.conn();
Path path = new Path("/user/bigdata/idea/a.txt");
FSDataInputStream fsis = fs.open(path);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("E:/a_hdfs.txt")));
IOUtils.copyBytes(fsis, bos,config,true);
this.close();
}

public void getBlocks() throws IOException, InterruptedException {
this.conn();
Path path = new Path("/user/bigdata/seq.txt");
FileStatus fileStatus = fs.getFileStatus(path);
BlockLocation[] blockLocations = fs.getFileBlockLocations(fileStatus, 0, fileStatus.getLen());

for (BlockLocation blk : blockLocations) {
System.out.println(blk);
}

FSDataInputStream fsis = fs.open(path);
fsis.seek(1048576);
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());
System.out.println((char) fsis.readByte());

this.close();
}

public void close() throws IOException {
fs.close();
}

public static void main(String[] args) throws IOException, InterruptedException {
TestHDFS test = new TestHDFS();
// test.mkdir();
// test.upload();
// test.download();
test.getBlocks();

}

}
原文地址:https://www.cnblogs.com/rabbit624/p/14458662.html