`
suxain
  • 浏览: 18401 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

hadoop hdfs JAVA API 基本文件操作

阅读更多

       本文主要介绍了 HADOOP HDFS JAVA API 对HDFS中的文件操作,如:创建文件,将文件上传到HDFS,从HDFS下载文件到本地,HDFS文件删除等

       话不多说,上代码:

    

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URI;

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;

/**
 * HADOOP HDFS 工具类
 * 
 * @author 
 * @date 2013-4-13
 */
public class HdsfFileUtil {

	/**
	 * 删除HDFS文件
	 * 
	 * @param path
	 *            删除文件路径
	 * @throws IOException
	 *             IO异常
	 */
	public static void deleteHdfsFile(String path) throws IOException {

		// 加载配置文件
		Configuration conf = new Configuration();
		conf.addResource("conf/core-site.xml");

		// 获取要删除的文件
		Path delefPath = new Path(path);
		FileSystem hdfs = delefPath.getFileSystem(conf);
		boolean isDeleted = false;

		// 检查文件是否存在,若存在,递归删除
		if (hdfs.exists(delefPath)) {
			isDeleted = hdfs.delete(delefPath, true);
			// 递归删除
		} else {
			isDeleted = false;
			System.out.println("文件不存在:删除失败");
		}
		System.out.println("Delete?" + isDeleted);
	}

	/**
	 * 将本地文件上传至HDFS
	 * 
	 * @param local
	 *            本地路径
	 * @param hdfs
	 *            hdfs路径
	 * @throws IOException
	 *             IO异常
	 */
	public static void uploadToHdfs(String local, String hdfs)
			throws IOException {

		// 加载配置文件
		Configuration config = new Configuration();
		config.addResource("conf/core-site.xml");

		// 获取HDFS文件系统
		FileSystem fs = FileSystem.get(URI.create(hdfs), config);

		// 读取本地文件
		FileInputStream fis = new FileInputStream(new File(local));
		OutputStream os = fs.create(new Path(hdfs));
		// 复制
		IOUtils.copyBytes(fis, os, 4096, true);

		os.close();
		fis.close();

		System.out.println("拷贝完成...");
	}

	/**
	 * 读取HDFS文件
	 * 
	 * @param fileName
	 *            源文件路径
	 * @param dest
	 *            写入文件路径
	 * @throws IOException
	 */
	public static void readFromHdfs(String fileName, String dest)
			throws IOException {
		// 加载配置文件
		Configuration conf = new Configuration();
		conf.addResource("conf/core-site.xml");

		// 获取HDFS文件系统
		FileSystem fs = FileSystem.get(URI.create(fileName), conf);

		// 打开文件流
		FSDataInputStream hdfsInStream = fs.open(new Path(fileName));

		// 写入本地文件系统
		OutputStream out = new FileOutputStream(dest);

		byte[] ioBuffer = new byte[1024];

		// 按行读取
		int readLen = hdfsInStream.read(ioBuffer);

		while (-1 != readLen) {

			out.write(ioBuffer, 0, readLen);
			System.out.println(new String(ioBuffer));
			readLen = hdfsInStream.read(ioBuffer);

		}

		out.close();

		hdfsInStream.close();

		fs.close();
	}

	/**
	 * 列出HDFS目录
	 * 
	 * @param path
	 *            路径
	 * @throws IOException
	 */
	public static void getDirectoryFromHdfs(String path) throws IOException {

		// 加载配置文件
		Configuration conf = new Configuration();
		conf.addResource("conf/core-site.xml");

		// 获取HDFS文件系统
		FileSystem fs = FileSystem.get(URI.create(path), conf);

		// 获取指定路径下的文件
		FileStatus fileList[] = fs.listStatus(new Path(path));

		int size = fileList.length;

		// 循环输出文件
		for (int i = 0; i < size; i++) {

			System.out.println("name:" + fileList[i].getPath().getName()
					+ "\t\tsize:" + fileList[i].getLen());

		}

		fs.close();

	}

}

 

分享到:
评论

相关推荐

    java操作Hadoop源码之HDFS Java API操作-上传文件

    java操作Hadoop源码之HDFS Java API操作-上传文件,附带所需全部jar包,欢迎下载学习。

    ecplise远程连接hadoop--hdfs java api操作文件.pdf

    ecplise远程连接hadoop--hdfs java api操作文件.pdf

    java操作Hadoop源码之HDFS Java API操作-创建目录

    java操作Hadoop源码之HDFS Java API操作-创建目录,附带所需全部jar包,欢迎下载学习。

    hadoop-hdfs-2.7.3-API文档-中英对照版.zip

    标签:apache、hdfs、hadoop、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    elcipse java hadoop操作hdfs的api

    自己整理的hadoop的java-api。各个API写得比较简单,比较细,适合初学者参考。PS:集群请自行搭建

    实验二、HDFS shell操作及HDFS Java API编程

    适合刚接触hadoop的学生或小白,内容包括HDFS shell操作及HDFS Java API编程 有图片有代码

    HDFS在JAVA API的操作

    HDFS在JAVA API中的操作,以及在ecplise中的配置详情。

    java通过api方式操作Hadoop

    该资源是java通过api的方式来操作hadoop,主要有以下操作: 一.文件操作 1.上传本地文件到hadood 2.在hadoop中新建文件,并写入 3.删除hadoop上的文件 4.读取文件 5.文件修改时间 二.目录操作 1.在hadoop上创建目录 ...

    hadoop-hdfs-client-2.9.1-API文档-中英对照版.zip

    标签:apache、hadoop、hdfs、client、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    hadoop-hdfs-2.7.3-API文档-中文版.zip

    标签:apache、hdfs、hadoop、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

    hadoop-hdfs-2.6.5-API文档-中文版.zip

    标签:apache、hdfs、hadoop、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

    hadoop-hdfs-2.6.5-API文档-中英对照版.zip

    标签:apache、hdfs、hadoop、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    HDFS的java api详解

    Java操作Hdfs,配置开发环境,NameNode详解,DataNode详解,namenode与datanode的工作机制

    hdfs-java-api

    hdfs api,研究hadoop的可以下来参考

    hadoop-hdfs-2.5.1-API文档-中英对照版.zip

    标签:apache、hadoop、hdfs、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    HDFS文件系统JAVA api访问接口(基于hadoop大数据平台)

    在搭建完hadoop大数据系统(CDH5.16.1)后,如何访问hdfs文件系统上的数据呢?那当然是通过构建maven项目 使用java api接口进行文件了。为此,特别进行了hdfs文件系统java api访问的整理。

    hadoop-hdfs-2.5.1-API文档-中文版.zip

    标签:apache、hadoop、hdfs、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

    hadoop-hdfs-2.9.1-API文档-中英对照版.zip

    标签:apache、hadoop、hdfs、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    实验二:熟悉常用的HDFS操作

    A.2实验二:熟悉常用的HDFS操作 ...(3)熟悉HDFS操作常用的Java API。 A.2.2 实验平台 (1)操作系统:Linux(建议Ubuntu 16.04)。(2) Hadoop版本:2.7.1。 (3)JDK版本:1.7或以上版本。(4) Java IDE:Eclipse。

    java API 操作HDFS

    javaAPI操作HDFS,测试可用 window环境需要下载hadoop客户端

Global site tag (gtag.js) - Google Analytics