编写Java代码对HDFS进行增删改查操作代码实例

 更新时间:2019年04月10日 11:10:09   作者:Alvis zhao  
这篇文章主要介绍了Java代码对HDFS进行增删改查操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本文实例为大家分享了Java代码对HDFS进行增删改查操作的具体代码,供大家参考,具体内容如下

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

import org.apache.commons.compress.utils.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
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;

public class FileOpreation {

	public static void main(String[] args) throws IOException {
		//CreateFile();
		//DeleteFile();
		//CopyFileToHDFS();
		//MkDirs();
		//DelDirs();
		ListDirectory();
		DownLoad();

	}
	public static void CreateFile() throws IOException {
		String uri = "hdfs://Alvis:9000";
		Configuration configuration =new Configuration();
		FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);
		byte[] file_content_buff="hello hadoop world, test write file !\n".getBytes();
		Path dfs = new Path("/home/test.txt");
		FSDataOutputStream outputStream = fSystem.create(dfs);
		outputStream.write(file_content_buff.length);
	}
	public FileOpreation() {
		// TODO Auto-generated constructor stub
	}public static void DeleteFile() throws IOException {
		String uri = "hdfs://Alvis:9000";
		Configuration configuration =new Configuration();
		FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);
		Path deletf = new Path("/home/test.txt");
		boolean delResult = fSystem.delete(deletf,true);
		System.out.println(delResult==true?"删除成功":"删除失败");
	}
  
	public static void CopyFileToHDFS() throws IOException {
		String uri = "hdfs://Alvis:9000";
		Configuration configuration =new Configuration();
		FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);
		Path src = new Path("E:\\SerializationTest\\APITest.txt");
		Path dest_src = new Path("/home");
		fSystem.copyFromLocalFile(src, dest_src);
	}
	
	public static void MkDirs() throws IOException {
		String uri = "hdfs://Alvis:9000";
		Configuration configuration =new Configuration();
		FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);
		Path src = new Path("/Test");
		fSystem.mkdirs(src);
		
	}
	
	public static void DelDirs() throws IOException {
		String uri = "hdfs://Alvis:9000";
		Configuration configuration = new Configuration();
		FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);
		Path src = new Path("/Test");
		fSystem.delete(src);

	}
	
	public static void ListDirectory() throws IOException {
		String uri = "hdfs://Alvis:9000";
		Configuration configuration = new Configuration();
		FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);
		FileStatus[] fStatus = fSystem.listStatus(new Path("/output"));
		for(FileStatus status : fStatus)
			if (status.isFile()) {
				System.out.println("文件路径:"+status.getPath().toString());
				System.out.println("文件路径 getReplication:"+status.getReplication());
				System.out.println("文件路径 getBlockSize:"+status.getBlockSize());
				BlockLocation[] blockLocations = fSystem.getFileBlockLocations(status, 0, status.getBlockSize());
				for(BlockLocation location : blockLocations){
					System.out.println("主机名:"+location.getHosts()[0]);
					System.out.println("主机名:"+location.getNames()[0]);
			  }
		  }
			else {
				System.out.println("directory:"+status.getPath().toString());
			}
	}
	
	public static void DownLoad() throws IOException {
		Configuration configuration = new Configuration();
		configuration.set("fs.defaultFS", "hdfs://Alvis:9000");
		FileSystem fSystem =FileSystem.get(configuration);
		FSDataInputStream inputStream =fSystem.open( new Path("/input/wc.jar"));
		FileOutputStream outputStream = new FileOutputStream(new File("E:\\LearnLife\\DownLoad\\wc.jar"));
		IOUtils.copy(inputStream, outputStream);
		System.out.println("下载成功!");
	}
}

思想:

一、定义虚拟机接口

二、先拿到HDFS远程调用接口对象Configuration

三、定义分布式文件系统FileSystem对象获取对象

四、给定路径

五、用FileSystem对象调用操作

以上所述是小编给大家介绍的Java代码对HDFS进行增删改查操作详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Java Swing JButton按钮的实现示例

    Java Swing JButton按钮的实现示例

    这篇文章主要介绍了Java Swing JButton按钮的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • springboot 文件上传大小配置的方法

    springboot 文件上传大小配置的方法

    本篇文章主要介绍了springboot 文件上传大小配置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • springboot 日志彩色消失的2种解决方案

    springboot 日志彩色消失的2种解决方案

    这篇文章主要介绍了springboot 日志彩色消失的2种解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • JavaSE中Lambda表达式的使用与变量捕获

    JavaSE中Lambda表达式的使用与变量捕获

    这篇文章主要介绍了JavaSE中Lambda表达式的使用与变量捕获,Lambda表达式允许你通过表达式来代替功能接口, 就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体,下面我们来详细看看,需要的朋友可以参考下
    2023-10-10
  • java批量下载将多个文件(minio中存储)压缩成一个zip包代码示例

    java批量下载将多个文件(minio中存储)压缩成一个zip包代码示例

    在Java应用程序中有时我们需要从多个URL地址下载文件,并将这些文件打包成一个Zip文件进行批量处理或传输,这篇文章主要给大家介绍了关于java批量下载将多个文件(minio中存储)压缩成一个zip包的相关资料,需要的朋友可以参考下
    2023-11-11
  • 一篇文章带你了解Java方法的使用

    一篇文章带你了解Java方法的使用

    这篇文章主要给大家介绍了关于Java中方法使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • SpringBoot如何获取当前操作用户的id/信息

    SpringBoot如何获取当前操作用户的id/信息

    在一般性的基设需求中,有需要获取当前用户操作记录的情况,也就是说我们需要记录当前用户的信息,如:id、昵称、账号等信息,这篇文章主要介绍了SpringBoot获取当前操作用户的id/信息,需要的朋友可以参考下
    2023-10-10
  • springboot使用kafka事务的示例代码

    springboot使用kafka事务的示例代码

    Kafka 同数据库一样支持事务,当发生异常的时候可以进行回滚,确保消息监听器不会接收到一些错误的或者不需要的消息,本文就来介绍一下springboot使用kafka事务的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Java操作文件输出为字符串以及字符串输出为文件的方法

    Java操作文件输出为字符串以及字符串输出为文件的方法

    今天小编就为大家分享一篇Java操作文件输出为字符串以及字符串输出为文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Springboot使用异步请求提高系统的吞吐量详解

    Springboot使用异步请求提高系统的吞吐量详解

    这篇文章主要介绍了Springboot使用异步请求提高系统的吞吐量详解,和同步请求相对,异步不需要等待响应,随时可以发送下一次请求,如果是同步请求,需要将信息填写完整,再发送请求,服务器响应填写是否正确,再做修改,需要的朋友可以参考下
    2023-08-08

最新评论