Hadoop setInputPathFilter错误

2024-04-25

我正在使用 Hadoop 0.20.2(无法更改),并且我想向我的输入路径添加一个过滤器。数据如下:

/path1/test_a1
/path1/test_a2
/path1/train_a1
/path1/train_a2

我只想处理所有文件train在他们中。

查看 FileInputFormat 类建议使用:

 FileInputFormat.setInputPathFilter(Job job, Class<? extends PathFilter> filter)

这就是我的问题开始的地方,因为路径过滤器 http://hadoop.apache.org/docs/r0.20.2/api/org/apache/hadoop/fs/PathFilter.html是一个接口 - 当然,我可以扩展该接口,但我仍然没有实现。因此,我实现了该接口:

class TrainFilter implements PathFilter
{
   boolean accept(Path path)
   {
      return path.toString().contains("train");
   }
}

当我使用 TrainFilter 作为 PathFilter 时,代码会编译,但是当我运行它时,我会收到异常,因为输入路径搞砸了。在不设置过滤器的情况下,我的代码会运行 /path1 下面的所有文件,但是,在设置过滤器时,它会抛出错误:

InvalidInputException: Input path does not exist hdfs://localhost:9000/path1

这是我在驱动程序代码中设置的方法:

job.setMapperClass(....class);
job.setInputFormatClass(....class);
job.setMapOutputKeyClass(...class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(IntWritable.class);
job.setOutputValueClass(IntWritable.class);

FileInputFormat.setInputPathFilter(job, TrainFilter.class);
FileInputFormat.addInputPath(job, new Path("/path1/"));
FileOutputFormat.setOutputPath(job, new Path("/path2/"));
job.waitForCompletion(true);

对我在这里做错了什么有什么建议吗?

编辑:我发现了问题。对 PathFilter 的第一次调用始终是目录本身(/path1),并且由于它不包含(“train”),因此目录本身无效,因此引发异常。这让我想到了另一个问题:如何测试任意路径是否是目录?据我所知,我需要对文件系统的引用,它不是 PathFilter 的默认参数之一。


或者,您可以尝试循环遍历给定目录中的所有文件并检查文件名是否以train. E.g:

        Job job = new Job(conf, "myJob");
        List<Path> inputhPaths = new ArrayList<Path>();

        String basePath = "/user/hadoop/path";
        FileSystem fs = FileSystem.get(conf);
        FileStatus[] listStatus = fs.globStatus(new Path(basePath + "/train*"));
        for (FileStatus fstat : listStatus) {
            inputhPaths.add(fstat.getPath());
        }

        FileInputFormat.setInputPaths(job,
                (Path[]) inputhPaths.toArray(new Path[inputhPaths.size()]));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop setInputPathFilter错误 的相关文章

  • 对在 C++ 应用程序中作为函数参数传递的文件运行“iconv”命令

    我正在尝试将 Windows 文件 CP1252 格式 转换为 Linux 应用程序的 UTF 8 格式 我想在我的 C 应用程序中运行以下命令 iconv f CP1252 t UTF 8 file ldf dos2unix gt out
  • 纱线上的火花,连接到资源管理器 /0.0.0.0:8032

    我正在我的开发机器 Mac 上编写 Spark 程序 hadoop的版本是2 6 spark的版本是1 6 2 hadoop集群有3个节点 当然都在linux机器上 我在idea IDE中以spark独立模式运行spark程序 它运行成功
  • 将 CSV 转换为序列文件

    我有一个 CSV 文件 我想将其转换为 SequenceFile 我最终将使用它来创建 NamedVectors 以在聚类作业中使用 我一直在使用 seqdirectory 命令尝试创建 SequenceFile 然后使用 nv 选项将该输
  • 适用于 Hadoop 的 DynamoDB 输入格式

    我必须使用 Hadoop mapreduce 处理保留在 Amazon Dynamodb 中的一些数据 我在互联网上搜索 Dynamo DB 的 Hadoop InputFormat 但找不到它 我对 Dynamo DB 不熟悉 所以我猜测
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • HDFS 中的文件数量与块数量

    我正在运行单节点 hadoop 环境 当我跑的时候 hadoop fsck user root mydatadir block 我真的对它给出的输出感到困惑 Status HEALTHY Total size 998562090 B Tot
  • Pig 10.0 - 将元组分组并在 foreach 中合并包

    我在用着Pig 10 0 我想在 foreach 中合并包 假设我有以下内容visitors alias a b 1 2 3 4 a d 1 3 6 a e 7 z b 1 2 3 我想对第一个字段上的元组进行分组 并将包与一组语义合并以获
  • 如何使用 open with 语句打开文件

    我正在研究如何在 Python 中进行文件输入和输出 我编写了以下代码 将一个文件中的名称列表 每行一个 读取到另一个文件中 同时根据文件中的名称检查名称并将文本附加到文件中出现的位置 该代码有效 可以做得更好吗 我想用with open
  • 2n + 1 法定人数是什么意思?

    我在描述 HBase 的 Zookeeper 配置时遇到过这个问题 但我对这个术语并不熟悉 N 与我的 HBase 集群中的节点数量有关系吗 或者我应该在 Zookeeper 集群中使用的节点数量 2f 1是指你所需要的可靠性 可用性水平
  • 名称节点处于安全模式

    我提到了这些问题名称节点处于安全模式 无法离开 https stackoverflow com questions 15803266 name node is in safe mode not able to leave and SafeM
  • Spark 写入 hdfs 无法使用 saveAsNewAPIHadoopFile 方法

    我在 CDH 5 2 0 上使用 Spark 1 1 0 并试图确保我可以读取和写入 hdfs 我很快意识到 textFile 和 saveAsTextFile 调用旧的 api 并且似乎与我们的 hdfs 版本不兼容 def testHD
  • 无法在 Hadoop Map-Reduce 作业中加载 OpenNLP 句子模型

    我正在尝试将 OpenNLP 集成到 Hadoop 上的 Map Reduce 作业中 从一些基本的句子分割开始 在地图函数中 运行以下代码 public AnalysisFile analyze String content InputS
  • 在 Hadoop MapReduce 中为二进制文件创建自定义 InputFormat 和 RecordReader

    我正在编写一个 M R 作业 该作业处理以二进制格式编写的大型时间序列数据文件 如下所示 此处换行以提高可读性 显然 实际数据是连续的 TIMESTAMP 1 TIMESTAMP 1 TIMESTAMP 2 TIMESTAMP 2 TIME
  • 为什么我需要一块一块地读取文件来缓冲?

    我看到了以下用于将文件放入数组的代码 该数组又用作将其插入 blob 列的 SQL 命令的参数 using FileStream fs new FileStream soubor FileMode Open FileAccess Read
  • 将 Spark 添加到 Oozie 共享库

    默认情况下 Oozie 共享 lib 目录提供 Hive Pig 和 Map Reduce 的库 如果我想在 Oozie 上运行 Spark 作业 最好将 Spark lib jar 添加到 Oozie 的共享库 而不是将它们复制到应用程序
  • Hadoop-reducer 如何获取数据?

    据我所知 映射器为每个减速器生成 1 个分区 减速器如何知道要复制哪个分区 假设有 2 个节点运行用于字数统计程序的映射器 并且配置了 2 个缩减器 如果每个映射节点生成 2 个分区 并且两个节点中的分区都可能包含相同的单词作为键 那么减速
  • Mapreduce shuffle 阶段出现内存不足错误

    我在运行时遇到奇怪的错误类似字数统计映射缩减程序 我有一个包含 20 个从站的 hadoop 集群 每个从站都有 4 GB RAM 我将 Map 任务配置为 300MB 堆 Reduce 任务槽为 1GB 我每个节点有 2 个映射槽和 1
  • Python 包安装:pip 与 yum,还是两者一起安装?

    我刚刚开始管理 Hadoop 集群 我们使用 Bright Cluster Manager 直至操作系统级别 CentOS 7 1 然后使用 Ambari 以及适用于 Hadoop 的 Hortonworks HDP 2 3 我不断收到安装
  • 如何使用C++以相反的顺序读取文件[重复]

    这个问题在这里已经有答案了 如何使用 C 以相反的顺序 即从 eof 读取文本文件 是的 但基本上你必须手动完成 基本算法如下 查找文件末尾is seekg 0 is end 确定文件大小is tellg 反复向后查找并读取文件块 直到到达
  • 覆盖hadoop中的log4j.properties

    如何覆盖hadoop中的默认log4j properties 如果我设置 hadoop root logger WARN console 它不会在控制台上打印日志 而我想要的是它不应该在日志文件中打印 INFO 我在 jar 中添加了一个

随机推荐

  • 基于正方形瓷砖直角三角形象限的坐标系中的边界框

    我正在为游戏创建一个基于图块的 2D 地形系统 然而 我还使用游戏中的坐标 需要能够将边界框映射到 图块坐标 中 并点击边界框接触的每个图块 不用担心 有一个 kd 树和所有工作 美好的 使用定点 真实世界 坐标 我可以将每个图块计为 2
  • 计算事件循环中的活动任务

    如何找出事件循环中有多少个活动任务 在文档中我只找到asyncio Task all tasks https docs python org 3 library asyncio task html asyncio Task all task
  • 在运行时添加路由 (ExpressJs)

    我想在运行时添加路线 我读到这是可能的 但我不太确定如何 目前我使用以下代码 var app express function CreateRoute route app use route require routes customcha
  • 由于 StaticLoggerBinder.class 中的重复数据删除错误,Scala SBT 程序集无法合并

    我的问题是我无法再使用 sbt assemble 插件 因为在从事该项目的几个人之间出现了某种依赖项合并问题 我运行 sbt assembly 时出现的问题 错误 合并时遇到3个错误 java lang RuntimeException 重
  • 我们可以在单个 Watchkit 应用程序中创建多个概览界面吗?

    我正在尝试创建一个 WatchKit 应用程序 需要以扫视的形式向用户显示多条信息 有没有办法在这样的应用程序中创建多个扫视 每个申请不能多看一眼 但是没有什么可以阻止您创建一个扫视 它将包含 每个扫视类型 的所有可能状态 然后在运行时执行
  • 在您的应用程序 Swift 代码上启动 Youtube 频道

    我花了几天时间找到从我的应用程序打开 youtube 频道的 Swift 代码 但我根本找不到 有人可以帮助我吗 我需要 Swift 中的代码 Swift 3 和 iOS 10 的更新 好的 下面是如何在 Swift 3 中做到这一点 基本
  • 如何将一个 xaml 页面导航到另一页面?

    我有 2 个页面 我需要将 mainpage xaml 导航到 login page xaml 但它让我崩溃你调用的对象是空的 在 Root Children Clear 我在 App xaml 中添加了以下代码 private void
  • asp.net mvc数据注释验证url

    有人可以告诉我如何验证一个网址吗http www abc com http www abc com 让 System Uri 为您完成繁重的工作 而不是 RegEx public class UrlAttribute ValidationA
  • vs2010 C++ 尾调用优化

    考虑以下代码 int fac aux int x int res if x 1 return res else return fac aux x 1 res x int fac int x return fac aux x 1 int ma
  • 调用视图文件时如何传递参数?

    我使用 Sinatra 和 Haml 编写了一个 Web 表单 用于调用 Ruby 脚本 一切看起来都很好 除了一件事 我需要从 Sinatra Ruby 脚本将参数传递给 Haml 视图文件 这是我的代码的一部分 usr bin env
  • 在本地系统上模拟多个用户/提交者

    从我的书中 我试图学习如何在本地系统本身上模拟多个 git 用户 我 将假装是所有这些多个用户 我按照书中的说明模拟多个用户对存储库提交更改 本书的输出显示了两个不同的人git log是 被执行 但是 我的输出仅显示一个用户 那就是我 如何
  • 尝试使用 qemu-arm 运行arm二进制文件时如何解决“加载共享库时出错”?

    我正在运行 Linux Mint 14 并安装了 qemu qemu user 和 gnueabi 工具链 我编译了 test carm linux gnueabi gcc test c o test 当我尝试跑步时qemu arm usr
  • 如何使用 Arm 模板获取应用服务中的主体 Id?

    您好 我正在编写 ARM 模板来部署我的应用程序服务 我想在我的手臂模板中创建系统标识 在应用程序服务臂模板部分中 我有以下代码 identity principalId reference variables identity resou
  • 在 Jersey Rest 中使用 @Consume 和 GET 请求

    我正在尝试将 GET 请求中的值绑定到 POJO 这些值是 HTTP GET 请求中的参数 我使用 JSONP 来传递参数 但看起来 JSONP 将 JSON 对象推到请求行上 因此它实际上并不是正在发送的 JSON 对象 而只是 URL
  • JavaFX Span Tableview 通过 MapEntries 合并单元格

    你好 我有以下地图 Map
  • 在 Android Oreo 及更高版本上根据 FCM 通知唤醒我的应用程序

    我的应用程序的一个重要部分是处理即时消息并接收 FCM 通知 应用程序如何在收到高重要性通知后唤醒几秒钟 从服务器进行短暂的提取并返回到之前的状态 我看过很多理论解释 但没有真正的源代码示例来实现这一点 有人可以帮忙吗 Extend Fir
  • 如何让键盘显示返回键?

    我想我已经尝试了所有组合 但我无法让字母键盘显示返回键 它始终是一个 完成 按钮 没有什么用处 在 Nexus 7 4 1 上 情况更糟 并显示一个愚蠢的笑脸按钮和 完成 按钮 这对我的应用程序没有任何意义 只要有返回按钮 就可以有 完成
  • 如何将欢迎页面设置为 struts 操作?

    我有一个基于 struts 的 web 应用程序 我希望默认的 欢迎 页面成为一个操作 我发现的唯一解决方案似乎是使欢迎页面成为包含操作重定向的 JSP 例如 在web xml
  • AsyncTask 真的在概念上存在缺陷还是我只是错过了一些东西?

    我已经研究这个问题几个月了 提出了不同的解决方案 但我对此并不满意 因为它们都是大规模的黑客攻击 我仍然不敢相信一个设计上有缺陷的类进入了框架并且没有人谈论它 所以我想我一定是错过了一些东西 问题在于AsyncTask 根据文档它 允许执行
  • Hadoop setInputPathFilter错误

    我正在使用 Hadoop 0 20 2 无法更改 并且我想向我的输入路径添加一个过滤器 数据如下 path1 test a1 path1 test a2 path1 train a1 path1 train a2 我只想处理所有文件trai