花开不停 花开不停
首页
  • 追忆杂谈
  • 书信往来
  • 旅行记录
  • 文定之喜
  • 黄金屋-颜如玉
  • 程序化广告
  • 禅茶一味
  • 随写编年
  • 家人物语
  • 追忆青春
  • 大千世界
  • Shell
  • Java
  • Spark
  • Hadoop
  • ClickHouse
  • MySQL
  • PostgreSQL
  • MongoDB
  • 调度器
  • Zookeeper
  • Kafka
  • Flume
  • 学习周刊
  • 关于
  • 本站部署
  • 分类
  • 标签
  • 归档
开往 (opens new window)

花开不停

此心光明,亦复何言
首页
  • 追忆杂谈
  • 书信往来
  • 旅行记录
  • 文定之喜
  • 黄金屋-颜如玉
  • 程序化广告
  • 禅茶一味
  • 随写编年
  • 家人物语
  • 追忆青春
  • 大千世界
  • Shell
  • Java
  • Spark
  • Hadoop
  • ClickHouse
  • MySQL
  • PostgreSQL
  • MongoDB
  • 调度器
  • Zookeeper
  • Kafka
  • Flume
  • 学习周刊
  • 关于
  • 本站部署
  • 分类
  • 标签
  • 归档
开往 (opens new window)
  • Shell编程

  • Java编程笔记

  • Spark

  • Hadoop

    • Hadoop集群部署
    • Hadoop本地Idea开发环境部署
    • Hadoop开发示例
    • MapReduce启动时输入文件不存在报错的校验
      • 1.1 场景描述
      • 1.2 解决方案
  • ClickHouse

  • MySQL

  • PostgreSQL

  • MongoDB

  • 调度器

  • Zookeeper

  • Kafka

  • Flume

  • 编程世界
  • Hadoop
花开不停
2024-06-20
目录

MapReduce启动时输入文件不存在报错的校验原创

# 1.1 场景描述

MapReduce 或其他大数据处理框架,启动时加载数据文件,如果文件不存在,就会报错且终止程序。

在实际场景中,有些文件确实会存在不存在的情况,且情况正常,那么为了不报错接着进行逻辑运算,可以在加载文件前进行文件是否存在的校验。

# 1.2 解决方案

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * @Auther:weichao
 * @功能描述:
 * @Version:1.0
 */
public class Test002 {

    public static void main(String[] args) throws Exception {
        getInputFiles(new Configuration());
    }
    private static List<String> getInputFiles(Configuration conf) throws Exception {
        // 采用线程安全的List, 避免删除数据报错
        List<String> inputFiles = new CopyOnWriteArrayList<>();

        inputFiles.add("cosn://test-logs-666/ttdir/hehe/");
        inputFiles.add("cosn://test-logs-666/ttdir/haha/");

        // 校验文件是否存在
        for (String inputFile : inputFiles) {
            Path filePath = new Path(inputFile);
            FileSystem fs = filePath.getFileSystem(conf);
            if (fs.exists(filePath)) {
                System.out.println("load path : " + inputFile);
            } else {
                inputFiles.remove(inputFile);
                System.out.println("No such file or directory on COSN: " + inputFile);
            }
        }
        return inputFiles;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
上次更新: 2024/06/28, 14:46:16

← Hadoop开发示例 clickhouse常用函数→

最近更新
01
Dolphin+XXL-JOB监控Hadoop任务执行结果量级 原创
01-04
02
调度Hive定时删除30天之前的分区 原创
01-04
03
Java第三方SDK的使用方法 原创
12-16
更多文章>
Theme by Vdoing | Copyright © 2023-2026 | 京ICP备2023013437号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式