一、HDFS java经常使用API 及hadoop-eclipse-plugin-1.1.2.jar插件的使用java
import java.io.FileInputStream; import java.net.URI; 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 BasicOperation { private static final String PATH="hdfs://192.168.255.132:9000/"; /** * @param args * @throws Throwable * @author nwpulisz */ public static void main(String[] args) throws Throwable { // TODO Auto-generated method stub URI uri = new URI(PATH); FileSystem fileSystem = getFileSystem(uri); list(fileSystem,PATH); readFileFromServer(fileSystem,PATH+"hello"); //putFiletoServer(fileSystem, PATH+"up.txt"); //mkdirOnServer(fileSystem,PATH+"Yang" ); //rmdirOnServer(fileSystem, PATH+"Li"); } private static FileSystem getFileSystem(URI uri) throws Throwable{ //获取FileSystem对象,FileSystem的获取方式:不能new,只能经过静态方法获取; FileSystem fileSystem = FileSystem.get(uri, new Configuration()); return fileSystem; } private static void readFileFromServer(FileSystem fileSystem,String path) throws Throwable{ //读取服务器上的文件 FSDataInputStream openStream = fileSystem.open(new Path(path)); IOUtils.copyBytes(openStream, System.out, new Configuration());//把文件流复制到输出流,控制台输出 IOUtils.closeStream(openStream); } private static void putFiletoServer(FileSystem fileSystem,String path) throws Throwable{ //上传本地文件至服务器 FSDataOutputStream openStream = fileSystem.create(new Path(path)); FileInputStream fileInputStream = new FileInputStream("up.txt"); //把本地文件up.txt转换为输入流 IOUtils.copyBytes(fileInputStream, openStream, new Configuration()); IOUtils.closeStream(fileInputStream); } private static void mkdirOnServer(FileSystem fileSystem,String path) throws Throwable{ //建立目录 fileSystem.mkdirs(new Path(path)); } private static void rmdirOnServer(FileSystem fileSystem,String path) throws Throwable{ //删除目录或者文件均可以 fileSystem.delete(new Path(path),true); } private static void list(FileSystem fileSystem,String path) throws Throwable{ //列出对应路径下的目录文件 FileStatus[] listStatus = fileSystem.listStatus(new Path(path)); for(FileStatus fileStatus:listStatus){ String isDir = fileStatus.isDir()?"目录":"文件"; String name = fileStatus.getPath().getName(); System.out.println(isDir+"\t"+name); } } }