`
suxain
  • 浏览: 19015 次
  • 性别: 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,使得开发者能够方便地与HDFS进行交互,包括文件的上传、下载、读写等操作。本篇文章将详细探讨如何使用HDFS Java API来实现文件上传的功能。 ...

    02--HDFS Java API操作.docx

    该 API 提供了多种方法来操作文件和目录,包括创建、删除、读取和写入文件,列出目录中的文件和子目录等。 二、HDFS Java API 操作步骤 1. 启动 Hadoop 服务 在 master 服务器上执行 `./start-all.sh` 命令以启动...

    hdfs-java-api

    * org.apache.hadoop.fs.FileSystem:该类提供了文件系统的基本操作,包括文件的读取、写入、复制、删除等。 * org.apache.hadoop.fs.Path:该类表示 HDFS 中的一个文件路径。 * org.apache.hadoop.conf....

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

    以上就是使用Java API操作Hadoop HDFS创建目录的完整过程。在实际应用中,你可能需要处理异常,优化错误处理,并根据具体需求进行更复杂的操作,比如读写文件、检查文件是否存在等。通过熟练掌握HDFS的Java API,你...

    java 从hadoop hdfs读取文件 进行groupby并显示为条形图

    Java API提供了访问HDFS的接口,例如`org.apache.hadoop.fs.FileSystem`类,可以用于读取、写入和管理文件系统中的文件。 2. **Hadoop MapReduce**:MapReduce是Hadoop用于并行处理和分析大数据的编程模型。在GROUP...

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

    在Eclipse中远程连接到Hadoop集群,并通过HDFS的Java API操作文件是一套涉及多个步骤的技术流程,这套流程主要涉及到分布式计算和文件系统操作的知识。首先,我们来梳理一下整个过程中的关键知识点。 第一步:启动...

    elcipse java hadoop操作hdfs的api

    1. **HDFS API**:HDFS API是Hadoop的核心组件之一,提供了对分布式文件系统的基本操作,如打开、创建、读取、写入、移动和删除文件或目录。主要类包括`FSDFSClient`、`FileSystem`、`Path`等。 2. **FileSystem...

    大数据技术基础实验报告-调用Java API实现HDFS操作.doc

    通过这些API,我们可以实现数据的上传、下载、查找、删除等基本操作,以及更复杂的文件系统操作。 在实际编程中,我们通常会创建一个Java类,导入Hadoop的相关库,然后使用FileSystem类和Path类等来执行HDFS操作。...

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

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

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

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

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

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

    HDFS文件系统基本文件命令、编程读写HDFS

    以下是一个使用 HDFS API 编写的操作文件系统的程序: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org....

    基于Java的Hadoop HDFS和MapReduce实践案例设计源码

    内容涵盖HDFS的JAVA API操作,如文件读取、写入、删除、元数据查询和文件列表等,以及MapReduce编程模型的多个应用,包括求平均数、Join操作、TopK算法、二次排序,并涉及自定义InputFormat、OutputFormat和shuflle...

    HDFS在JAVA API的操作

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

    HDFS实例基本操作

    2. 使用HDFS API:对于Java应用程序,可以使用Hadoop的FSDataOutputStream类,通过创建一个FileSystem实例,然后调用`create()`方法来上传文件。 三、HDFS的文件下载 1. 命令行工具:使用`hadoop fs -get`命令将...

    JavaWeb操作hadoop2.6 HDFS,从页面上传,下载,列表展示的demo

    1. **HDFS API集成**:为了操作HDFS,我们需要使用Hadoop的Java API。这包括创建HDFS客户端,连接NameNode,执行读写操作等。例如,`FileSystem`类用于打开、关闭和管理文件系统,`FSDataInputStream`和`...

    实验项目 实战 HDFS 实验报告

    HDFS Shell命令则用于交互式操作,如创建目录、上传/下载文件、查看文件内容等,这些命令包括ls、mkdir、put、get、rm等,通过它们可以熟练掌握HDFS的基本操作。 四、HDFS项目开发环境 在Hadoop集群的主节点上搭建...

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

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

    java通过api方式操作Hadoop

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

    java管理hdfs文件和文件夹项目hadoop2.4

    在Hadoop生态系统中,Java...总之,Java与Hadoop 2.4的HDFS交互涉及配置、连接、I/O操作以及文件和目录的管理。通过熟练掌握`FileSystem` API,你可以有效地编写管理HDFS的Java程序,实现对大数据集的高效存储和处理。

Global site tag (gtag.js) - Google Analytics