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错误 的相关文章

  • HDFS容量:如何阅读“dfsadmin报告”

    我使用的是 Hadoop 2 6 0 当我运行 hdfs dfsadmin report 时 我得到类似这样的信息 简化 Configured Capacity 3 TB Present Capacity 400GB DFS Remaini
  • 二进制文件 I/O

    如何用D语言读写二进制文件 在 C 语言中是 FILE fp fopen home peu Desktop bla bin wb char x 4 RIFF fwrite x sizeof char 4 fp 我在 D 找到了 rawWri
  • 将二进制文件读入结构体

    我正在尝试使用 C 读取二进制数据 我拥有有关我想要读取的文件中的数据布局的所有信息 我能够 逐块 读取数据 即将前 40 个字节的数据转换为字符串 然后获取接下来的 40 个字节 由于数据至少有三个略有不同的版本 我想将数据直接读入结构中
  • Hadoop setInputPathFilter错误

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

    我想编写多个输出文件 如何使用 Job 而不是 JobConf 来执行此操作 创建基于密钥的输出文件名的简单方法 input data type key value cupertino apple sunnyvale banana cupe
  • Hive(查找连续 n 列中的最小值)

    我在 Hive 中有一个表 有 5 列 即电子邮件 a first date b first date c first date d first date a b c d 是用户可以执行的 4 个不同操作 上表中的 4 列表示用户执行第一个
  • java.io.IOException:无法获取 LocationBlock 的块长度

    我正在使用 HDP 2 1 对于集群 我遇到了以下异常 并且 MapReduce 作业因此失败 实际上 我们定期使用 Flume 版本的数据创建表 1 4 我检查了映射器尝试读取的数据文件 但我找不到任何内容 2014 11 28 00 0
  • Hadoop 安全模式恢复 - 花费太长时间!

    我有一个包含 18 个数据节点的 Hadoop 集群 我在两个多小时前重新启动了名称节点 并且名称节点仍处于安全模式 我一直在寻找为什么这可能花费太长时间 但找不到好的答案 发帖在这里 Hadoop 安全模式恢复 花费大量时间 https
  • HDP 3.1.0.0-78 升级后无法使用 ResourceManager UI 终止 YARN 应用程序

    我最近将 HDP 从 2 6 5 升级到 3 1 0 它运行 YARN 3 1 0 并且我无法再使用旧的 8088 cluster apps 或新的 8088 从 YARN ResourceManager UI 终止应用程序 ui2 ind
  • Hive 中字符串数据类型是否有最大大小?

    谷歌了很多 但没有在任何地方找到它 或者这是否意味着只要允许集群 Hive 就可以支持任意大字符串数据类型 如果是这样 我在哪里可以找到我的集群可以支持的最大字符串数据类型大小 提前致谢 Hive 列表的当前文档STRING作为有效的数据类
  • Hive查询快速查找表大小(行数)

    是否有 Hive 查询可以快速查找表大小 即行数 而无需启动耗时的 MapReduce 作业 这就是为什么我想避免COUNT I tried DESCRIBE EXTENDED 但这产生了numRows 0这显然是不正确的 对新手问题表示歉
  • osx 上的 aio:它是在内核中实现还是通过用户线程实现?其他选择?

    我正在开发我的小型 C 框架 并且有一个文件类 它也应该支持异步读写 除了在我发现的一些工作线程中使用同步文件 I O 之外 唯一的解决方案是 aio 无论如何 我环顾四周并在某处读到 在 Linux 中 aio 甚至不是在内核中实现的 而
  • 在 C# 中创建文件的最快方法

    我正在运行一个程序来测试在包含大量文件的文件夹中查找和迭代所有文件的速度 该过程中最慢的部分是创建超过 100 万个文件 我目前正在使用一种非常幼稚的方法来创建文件 Console Write Creating 0 N0 file s of
  • 使用 Hadoop 映射两个数据集

    假设我有两个键值数据集 数据集A和B 我们称它们为数据集A和B 我想用 B 组的数据更新 A 组中的所有数据 其中两者在键上匹配 因为我要处理如此大量的数据 所以我使用 Hadoop 进行 MapReduce 我担心的是 为了在 A 和 B
  • Hadoop安装问题:

    我跟着this http www bogotobogo com Hadoop BigData hadoop Install on ubuntu single node cluster phpHadoop 安装教程 不幸的是 当我运行全部启动
  • Spark 上的 Hive 2.1.1 - 我应该使用哪个版本的 Spark

    我在跑蜂巢2 1 1 Ubuntu 16 04 上的 hadoop 2 7 3 根据Hive on Spark 入门 https cwiki apache org confluence display Hive Hive on Spark
  • hive查询无法通过jdbc生成结果集

    我是 Hive 和 Hadoop 的新手 在我的教程中 我想将表创建为 import java sql SQLException import java sql Connection import java sql ResultSet im
  • 如何通过pthreads管理两个或多个消费者?

    我有一个正在寻求解决的通用问题 即从标准输入或常规文件流发送到应用程序的二进制数据块 应用程序又将二进制数据转换为文本 使用线程 我想在将文本传输到下一个应用程序之前对其进行处理 该应用程序会进一步修改该文本 依此类推 作为一个简单的测试用
  • Oozie SSH 操作

    Oozie SSH 操作问题 Issue 我们正在尝试在集群的特定主机上运行一些命令 我们为此选择了 SSH Action 我们面对这个 SSH 问题已经有一段时间了 这里真正的问题可能是什么 请指出解决方案 logs AUTH FAILE
  • 这个 Java 语法是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 java中的是什么意思 https stackoverflow com questions 12649572 what does the type in java mean 在下面的代码中 Itera

随机推荐

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

    我正在为游戏创建一个基于图块的 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