欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 5.4.2-1 编写Java程序在HDFS上创建文件

5.4.2-1 编写Java程序在HDFS上创建文件

2025/5/24 7:42:37 来源:https://blog.csdn.net/howard2005/article/details/143791967  浏览:    关键词:5.4.2-1 编写Java程序在HDFS上创建文件

本次实战涉及使用Java操作Hadoop HDFS,包括创建文件、判断文件存在性及异常处理。通过手动添加依赖、启动HDFS服务,成功在HDFS上创建和检查文件。进一步探索了文件操作的最佳实践,如检查文件存在性以避免重复创建,以及处理HDFS安全模式下的异常情况。整个过程加深了对Hadoop文件系统操作的理解,并提高了解决实际问题的能力。
在这里插入图片描述


用Maven项目比用Java项目更方便,在pom.xml添加2个依赖即可
在这里插入图片描述

  • 项目对象模型文件 - pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net.huawei</groupId><artifactId>Test</artifactId><version>1.0-SNAPSHOT</version><name>Test</name><dependencies><!--hadoop客户端--><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.3.4</version></dependency><!--单元测试框架--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency></dependencies></project>
  • 日志属性文件 - log4j.properties
    在这里插入图片描述
log4j.rootLogger=stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/hdfs.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
  • 创建文件类 - CreateFileOnHDFS
    在这里插入图片描述
package net.huawei.hdfs;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;import java.net.URI;/*** 功能:在HDFS上创建文件* 作者:华卫* 日期:2024年11月15日*/
public class CreateFileOnHDFS {@Testpublic void create1() throws Exception {// 创建配置对象Configuration conf = new Configuration();// 创建统一资源标识符String uri = "hdfs://master:9000";// 创建HDFS文件系统对象FileSystem fs = FileSystem.get(new URI(uri), conf);// 创建路径对象(指向文件)Path file = new Path(uri + "/ied02/hadoop.txt");// 基于路径对象创建文件boolean result = fs.createNewFile(file);// 判断文件是否创建成功if (result) {System.out.println("恭喜,文件[" + file + "]创建成功~");} else {System.out.println("遗憾,文件[" + file + "]创建失败~");}}@Testpublic void create2() throws Exception {// 创建配置对象Configuration conf = new Configuration();// 创建统一资源标识符String uri = "hdfs://master:9000";// 创建HDFS文件系统对象FileSystem fs = FileSystem.get(new URI(uri), conf);// 创建路径对象(指向文件)Path file = new Path(uri + "/ied02/hadoop.txt");// 判断文件是否存在if (fs.exists(file)) {System.out.println("文件[" + file + "]已经存在~");} else {try {// 基于路径对象创建文件boolean result = fs.createNewFile(file);// 判断文件是否创建成功if (result) {System.out.println("恭喜,文件[" + file + "]创建成功~");} else {System.out.println("遗憾,文件[" + file + "]创建失败~");}} catch (Exception e) {System.err.println("异常信息:" + e.getMessage());}}}
}
  • 删除文件,执行命令:hdfs dfs -rm /ied02/hadoop.txt
    在这里插入图片描述

  • 运行create1()方法,查看结果
    在这里插入图片描述

  • 此时,文件已经创建了,再次运行create1()方法,提示文件创建失败
    在这里插入图片描述

  • 运行create2()方法,提示文件已经存在
    在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词