开发者社区> thinkgamer.cn> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java 封装 HDFS API 操作

简介: 代码下载地址:点击下载 一:环境介绍 hadoop:2.6 Ubuntu:15.10 eclipse:3.8.1 二:操作包括 判断某个文件夹是否存在              isExist(folder); 创建文件夹                       ...
+关注继续查看

代码下载地址:点击下载

一:环境介绍

hadoop:2.6
Ubuntu:15.10
eclipse:3.8.1

二:操作包括

判断某个文件夹是否存在              isExist(folder);
创建文件夹                                    mkdir(folder);
删除文件夹                                    rmr(folder);
列出所有文件夹                 ls(folder);
递归列出所有文件夹                      lsr(folder);
上传文件                                        put(local, folder);
下载文件                                        get(folder,local1);
删除文件                                        rm(folder);
显示文件                                        cat(folder);

三:代码演示

package user_thing_tuijian;

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.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class hdfsGYT {
	
	private static  final String HDFS = "hdfs://127.0.0.1:9000/";

	public hdfsGYT(String hdfs,  Configuration conf ){
		this.hdfsPath = hdfs;
		this.conf = conf;
	}

	public hdfsGYT() {
		// TODO Auto-generated constructor stub
	}

	private String hdfsPath;
	private Configuration conf = new Configuration() ;
	
	public static void main(String[] args) throws IOException, URISyntaxException{
		hdfsGYT hdfsgyt = new hdfsGYT();
		String folder = HDFS + "mr/groom_system/small2.csv";
		String local = "/home/thinkgamer/Java/hadoop_shizhan/src/user_thing_tuijian/small2.csv";
		String local1 = "/home/thinkgamer/Java/hadoop_shizhan/src/user_thing_tuijian";
		//判断某个文件夹是否存在
		//hdfsgyt.isExist(folder);
		//创建文件夹
		//hdfsgyt.mkdir(folder);
		//删除文件夹
		//hdfsgyt.rmr(folder);
		//列出所有文件夹
		//hdfsgyt.ls(folder);
		//递归列出所有文件夹
		//hdfsgyt.lsr(folder);
		//上传文件
		//hdfsgyt.put(local, folder);
		//下载文件
		//hdfsgyt.get(folder,local1);
		//删除文件
		//hdfsgyt.rm(folder);
		//显示文件
		//hdfsgyt.cat(folder);
	}

	//显示文件
	private void cat(String folder) throws IOException, URISyntaxException {
		// 与hdfs建立联系
		FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
		Path path = new Path(folder);
		 FSDataInputStream fsdis = null;
	        System.out.println("cat: " + folder);
	        try {  
	            fsdis =fs.open(path);
	            IOUtils.copyBytes(fsdis, System.out, 4096, false);  
	          } finally {  
	            IOUtils.closeStream(fsdis);
	            fs.close();
	          }
	}

	//删除文件
	private void rm(String folder) throws IOException, URISyntaxException {
		//与hdfs建立联系
		FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
		Path path = new Path(folder);
		if(fs.deleteOnExit(path)){
			fs.delete(path);
			System.out.println("delete:" + folder);
		}else{
			System.out.println("The fiel is not exist!");
		}
		fs.close();
	}
	
	//下载文件
	private void get(String remote,  String local) throws IllegalArgumentException, IOException, URISyntaxException {
		// 建立联系
		FileSystem fs = FileSystem.get(new URI(HDFS), new Configuration());
		fs.copyToLocalFile(new Path(remote), new Path(local));
		System.out.println("Get From :   " + remote  + "   To :" + local);
		fs.close();
	}
	
	//上传文件
	private void put(String local, String remote) throws IOException, URISyntaxException {
		// 建立联系
		FileSystem fs = FileSystem.get(new URI(HDFS), new Configuration());
		fs.copyFromLocalFile(new Path(local), new Path(remote));
		System.out.println("Put :" + local  + "   To : " + remote);
		fs.close();
	}

	//递归列出所有文件夹
	private void lsr(String folder) throws IOException, URISyntaxException {
		//与hdfs建立联系
		FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
		Path path = new Path(folder);
		//得到该目录下的所有文件
		FileStatus[] fileList = fs.listStatus(path);
		for (FileStatus f : fileList) {
            System.out.printf("name: %s   |   folder: %s  |   size: %d\n", f.getPath(),  f.isDir() , f.getLen());
            try{
            	FileStatus[] fileListR = fs.listStatus(f.getPath());
            	for(FileStatus fr:fileListR){
                    System.out.printf("name: %s   |   folder: %s  |   size: %d\n", fr.getPath(),  fr.isDir() , fr.getLen());
            	}
            }finally{
            	continue;
            }
        }
		fs.close();
	}
	
	//列出所有文件夹
	private void ls(String folder) throws IOException, URISyntaxException {
		//与hdfs建立联系
		FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
		Path path = new Path(folder);
		//得到该目录下的所有文件
		FileStatus[] fileList = fs.listStatus(path);
		for (FileStatus f : fileList) {
            System.out.printf("name: %s   |   folder: %s  |   size: %d\n", f.getPath(),  f.isDir() , f.getLen());
        }
		fs.close();
	}

	//删除文件夹
	private void rmr(String folder) throws IOException, URISyntaxException {
		//与hdfs建立联系
		FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
		Path path = new Path(folder);
		fs.delete(path);
		System.out.println("delete:" + folder);
		fs.close();
	}
	
	//创建文件夹
	public void mkdir(String folder) throws IOException, URISyntaxException {
		//与hdfs建立联系
		FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
		Path path = new Path(folder);
		if (!fs.exists(path)) {
			fs.mkdirs(path);
			System.out.println("Create: " + folder);
		}else{
			System.out.println("it is have exist:" + folder);
		}
		fs.close();	
	}
	
	//判断某个文件夹是否存在
	private void isExist(String folder) throws IOException, URISyntaxException {
		//与hdfs建立联系
		FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
		Path path = new Path(folder);
		if(fs.exists(path)){
			System.out.println("it is have exist:" + folder);
		}else{
			System.out.println("it is not exist:" + folder);
		}	
		fs.close();
	}
	
}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java中封装性的使用
//Java面对对象基本特性之一:封装性 //作用:保护某些属性和方法不被外部所看见 //封装的实现:通过关键字private声明 //鼠标右键--->Source---->Generate Getters and setters自动获取get和set方法 class Person{ priv...
623 0
线程 - Java 多线程编程(下)
线程 - Java 多线程编程(下)
25 0
线程 - Java 多线程编程(上)
线程 - Java 多线程编程(上)
60 0
Java多线程那些事,对Java并发编程2w余字的总结,超详细(从入门到完全掌握)
Java多线程那些事,对Java并发编程2w余字的总结,超详细(从入门到完全掌握)
79 0
java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了。
67 0
五分钟带你玩转多线程(一)java多线程基础知识简介
线程概念 进程:是一个执行中的程序,如打开网易云音乐,网易云音乐就是一个进程 线程:是进程的组成,一个进程包含多个线程,是jvm最小调度单元。如网易云音乐听歌是一个线程,评价是一个线程。
50 0
Java的并发编程中的多线程问题到底是怎么回事儿?
原创: Hollis 在我之前的一篇《再有人问你Java内存模型是什么,就把这篇文章发给他。》文章中,介绍了Java内存模型,通过这篇文章,大家应该都知道了Java内存模型的概念以及作用,这篇文章中谈到,在Java并发编程中,通常会遇到三个问题,即原子性问题、一致性问题和有序性问题。
1057 0
+关注
thinkgamer.cn
wechat 搜索【数据与算法联盟】,专注于云计算和算法,目前就职于京东
237
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载