`
suxain
  • 浏览: 18316 次
  • 性别: 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 实验报告

    一、实验目的 1. 理解 HDFS 体系架构。 2. 理解 HDFS 文件存储原理和数据读写过程。 3. 熟练掌握 HDFS Web UI 界面的使用...5. 使用 HDFS Java API 编写 HDFS 文件操作程序,实现上传本地文件到 HDFS 的功能。。。。。

    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。

Global site tag (gtag.js) - Google Analytics