0
点赞
收藏
分享

微信扫一扫

wordpress独立站首页调用产品的三种方法

非宁静不致远 2024-11-18 阅读 2

本次实战涉及使用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.0
         https://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 {
    @Test
    public 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 + "]创建失败~");
        }
    }

    @Test
    public 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()方法,提示文件已经存在
    在这里插入图片描述

举报

相关推荐

0 条评论