仅当尝试打开假定的缓存文件时,Hadoop 2 IOException

2024-03-26

我最近更新到 hadoop 2.2(使用本教程here http://codesfusion.blogspot.com/2013/10/setup-hadoop-2x-220-on-ubuntu.html?m=1).

我的主要作业类如下所示,并抛出 IOException:

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.regex.*;

import org.apache.hadoop.conf.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.chain.*;
import org.apache.hadoop.mapreduce.lib.input.*;
import org.apache.hadoop.mapreduce.lib.output.*;
import org.apache.hadoop.mapreduce.lib.reduce.*;

public class UFOLocation2
{
    public static class MapClass extends Mapper<LongWritable, Text, Text, LongWritable>
    {
        private final static LongWritable one = new LongWritable(1);
        private static Pattern locationPattern = Pattern.compile("[a-zA-Z]{2}[^a-zA-Z]*$");

    private Map<String, String> stateNames;

    @Override
    public void setup(Context context)
    {
        try
        {
            URI[] cacheFiles = context.getCacheFiles();
            setupStateMap(cacheFiles[0].toString());
        }
        catch (IOException ioe)
        {
            System.err.println("Error reading state file.");
            System.exit(1);
        }
    }

    public void map(LongWritable key, Text value, Context context) 
                    throws IOException, InterruptedException
    {
        String line = value.toString();
        String[] fields = line.split("\t");
        String location = fields[2].trim();

        if (location.length() >= 2)
        {
            Matcher matcher = locationPattern.matcher(location);
            if (matcher.find())
            {
                int start = matcher.start();
                String state = location.substring(start, start + 2);
                context.write(new Text(lookupState(state.toUpperCase())), one);
            }
        }
    }

    private void setupStateMap(String filename) throws IOException
    {
        Map<String, String> states = new HashMap<String, String>();
        BufferedReader reader = new BufferedReader(new FileReader(filename));
        String line = reader.readLine();
        while (line != null)
        {
            String[] split = line.split("\t");
            states.put(split[0], split[1]);
            line = reader.readLine();
        }
        stateNames = states;
    }

    private String lookupState(String state)
    {
        String fullName = stateNames.get(state);
        return fullName == null ? "Other" : fullName;
    }
}

public static void main(String[] args) throws Exception
{
    Configuration config = new Configuration();
    Job job = Job.getInstance(config, "UFO Location 2");
    job.setJarByClass(UFOLocation2.class);

    job.addCacheFile(new URI("/user/kevin/data/states.txt"));

    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(LongWritable.class);

    Configuration mapconf1 = new Configuration(false);
    ChainMapper.addMapper(job, UFORecordValidationMapper.class, LongWritable.class, 
                Text.class, LongWritable.class,Text.class, mapconf1);

    Configuration mapconf2 = new Configuration(false);
    ChainMapper.addMapper(job, MapClass.class, LongWritable.class, 
                Text.class, Text.class, LongWritable.class, mapconf2);

    job.setMapperClass(ChainMapper.class);
    job.setCombinerClass(LongSumReducer.class);
    job.setReducerClass(LongSumReducer.class);

    FileInputFormat.addInputPath(job, new Path(args[0]));
    FileOutputFormat.setOutputPath(job, new Path(args[1]));

    System.exit(job.waitForCompletion(true) ? 0 : 1);               
}
}

我收到 IOException 因为它在尝试实例化时找不到文件“/user/kevin/data/states.txt”BufferredReader在方法中setupStateMap()


是的,它已被弃用并且Job.addCacheFile() http://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/Job.html#addCacheFile%28java.net.URI%29应该用于添加文件,并且在您的任务(映射或减少)中可以使用以下命令访问文件Context.getCacheFiles() http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapreduce/JobContext.html#getCacheFiles%28%29.

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

仅当尝试打开假定的缓存文件时,Hadoop 2 IOException 的相关文章

  • 使用比较器对对象进行排序给出空指针

    我正在尝试对包含 3 张卡的 ArrayList 进行排序 我正在用比较器来做这件事 这是否太过分了 Card getRank 返回 2 到 14 之间的整数 我完全不知道哪里出了问题 我之前已经成功完成了这个 并与我的其他代码进行了比较
  • 如何在 Groovy 中的 JSON Converter 方法中保留字母大小写?

    我正在尝试将 groovy 对象解析为 JSON 属性名称不遵循正确的驼峰式大小写形式 class Client String Name Date Birthdate 当我使用这个时 Client client new Client Nam
  • 匿名内部类显示不正确的修饰符

    据我了解 以下代码应该打印true作为输出 但是 当我运行这段代码时 它正在打印false 来自 Java 文档15 9 5 匿名类 https docs oracle com javase specs jls se8 html jls 1
  • java.lang.NoClassDefFoundError:HttpSessionListener

    我正在尝试部署一场我没有编写的战争 但我在日志中收到此错误 java lang NoClassDefFoundError HttpSessionListener 我知道 HttpSessionListener 位于servlet api j
  • 如何在流中收集到TreeMap中?

    我有两个Collectors groupingBy在流中 我需要收集所有信息TreeMap 我的代码 Map
  • Jackson Json 将对象反序列化为列表

    我正在使用 Spring 的 Web 服务RestTemplate并反序列化Jackson 在来自服务器的 JSON 响应中 其中一个字段可以是对象或列表 这意味着它可以是 result or result 有没有办法通过对我要反序列化的类
  • 按对象值分组,统计后按最大对象属性设置组键

    我设法使用 Java 8 Streams API 编写了一个解决方案 该解决方案首先按对象 Route 的值对列表进行分组 然后计算每组中的对象数量 它返回一个映射 Route gt Long 这是代码 Map
  • 从继承的受保护 Java 字段创建公共访问器

    我怎样才能完成以下工作 class Foo extends javax swing undo UndoManager increase visibility works for method override def editToBeUnd
  • Java 泛型和数字类型

    我想创建一个通用方法来有效地执行此操作 class MyClass static
  • 如何连接hibernate和DB2

    我正在运行一个使用 struts 和 hibernate 的应用程序 我目前正在使用 Derby 数据库 现在我必须转向 DB2 数据库 请告诉我 我必须做什么配置 休眠配置文件 我必须设置任何类路径吗 多变的 我知道 DB2 有两个 ja
  • Spring @Value 添加验证小于

    我使用以下属性值注入 我如何向此操作添加小于验证 我的意思是我想设置一个验证user maxpassiveday可以说 财产价值不得低于 100 Value user maxpassiveday int maxpassiveday 使用Sp
  • 比较和删除列表和数组java中不存在的元素

    我有一个String数组和一List
  • Java 中意外的负数

    import java util public class Prac9FibonacciNumbers public static void main String args int x new int 100 x 0 1 x 1 1 fo
  • 如何使用 UUID 生成唯一的正 Long

    我需要为我的数据库主键列生成唯一的长 ID 我以为我可以用UUID randomUUID getMostSignificantBits 但有时它也会产生一些负多头 这对我来说是个问题 是否可以从 UUID 中仅生成正长 将会有数十亿个条目
  • 如何在Webview中保存用户名和密码

    目前 我还在学习Android开发的过程中 所以如果我的这个问题对你来说不太容易理解 请原谅 我创建了一个 Android 应用程序 它使用 RecyclerView 显示一组列表 当用户单击列表中的每个名称时 它会将它们重定向到一组不同的
  • Android - 保持用户登录状态

    我正在尝试使用 PHP 和 MySQLi for Android 进行登录 我不明白的是如何保持用户登录状态 我看到一个简单的教程 其中有人使用 SQLite 来保护信息 但我不知道这是否真的安全 如何保存用户信息以保持用户登录状态 谢谢
  • 线程睡眠阻止我的 Swing 应用程序执行

    我的应用程序发生的事情是有道理的 但我不知道如何修复它 以下是我的应用程序功能的简要描述 计时器窗口应显示在屏幕右下角并显示实时时间 一小时后 它应该执行一些操作 我还没有决定该操作 我面临的问题是定时器 java当我刷新实时计时器的秒数时
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • Maven `help: effective-pom` 只为单个项目生成,而不是所有项目

    我想为多模块构建中的所有子项目生成有效的 pom The help effective pom文档here http maven apache org plugins maven help plugin usage html The hel
  • 在Java的System.out中以表格格式输出

    我正在从数据库获取结果 并希望将数据作为 Java 标准输出中的表输出 我尝试过使用 t 但我想要的第一列的长度变化很大 有没有办法将其显示在类似输出的漂亮表格中 Use System out format http java sun co

随机推荐

  • 将 jquery datepicker 创建的日期转换为标准 mysql 日期格式

    我在日记页面上使用以下 jquery 日期和时间选择器 http trentrichardson com examples timepicker rest examples http trentrichardson com examples
  • 如何以编程方式访问数据网格行详细信息控件

    我有一个数据网格 其中包含一些定义的列 然后是行详细信息模板 如何在隐藏代码中访问行详细信息模板中的控件 我有一个按钮 我想以编程方式启用 禁用 但我不知道如何在后面的代码中访问它 我在MSDN上看到过这个 http msdn micros
  • Roo - 添加自定义查找器

    我使用 Roo 创建了一个使用现有数据库的项目 我能够创建动态查找器 但我想实现自定义查找器 它将接收 4 个参数并使用其中一些参数创建 Like 条件 其他参数创建 equals 条件 对 Roo 来说 最好的方法是什么 推荐的模式是编辑
  • 仅当验证成功时如何提交表单

    我尝试在提交请求之前验证表单 我正在使用 jquery 验证 我期望当页面完成加载时 表单将自动提交 并且我将在 div 中看到 正在加载 但什么也没发生 这是我的代码 但似乎不起作用
  • Android应用程序数据存储不断增加

    我正在开发一个 Android 应用程序 它基本上加载新闻文章列表 并在用户单击时在网络视图中打开它们 我想知道的是 当我在 设置 gt 应用程序 gt 管理应用程序 中查看应用程序详细信息时 总存储大小不断增加 特别是 数据存储规模不断增
  • jquery dataTable 过滤器/搜索不起作用

    我是 jquery 新手 我使用了 jqueryData 表 我在搜索过程中遇到问题 搜索适用于前两列 例如 如果我使用 QE5855 或 3453457 进行搜索 则工作正常 但它不搜索第三列 例如 如果我输入 美国 或 美国 表未排序
  • Flutter Firebase 错误(任务“:app:mergeExtDexDebug”执行失败)

    我是编程新手 对 flutter 和 firebase 也很陌生 我正在尝试这段代码 https github com tattwei46 flutter login demo https github com tattwei46 flut
  • Google Places API 为什么每次都会在不同的变量下返回纬度和经度?

    这让我抓狂 出于某种原因 API 用于返回纬度和经度 如下所示 我认为是这样的 place geometry location y作为纬度 place geometry location z作为经度 然后它开始像这样返回 place geo
  • 抛硬币问题的Python代码

    我一直在用 python 编写一个程序 模拟 100 次抛硬币并给出抛硬币的总数 问题是我还想打印正面和反面的总数 这是我的代码 import random tries 0 while tries lt 100 tries 1 coin r
  • 如何在 gradle 脚本中获取正在运行的 Android 风格名称

    这次我遇到了这个问题 我试图在 gradle 脚本中获取当前的风格 我已经尝试过这里给出的答案如何在 gradle 中获取当前的风味 https stackoverflow com questions 30621183 how to get
  • CSS a href 样式

    我有一个 hrefclass button 我正在尝试这样设计 button a link text decoration none button a visited text decoration none button a active
  • UITableViewAutomaticDimension 在 Xcode 6.3 中不起作用

    我将 Xcode 与 Swift 1 2 一起更新到 6 3 并完成了转换 除了表视图的动态行高之外 一切正常 我在 3 个完全不同的表视图上有这些 所以它可能不是影响该错误的其他因素 我将所有表视图设置为 tableView rowHei
  • asp.net mvc 中具有相同输入 id 的两个表单

    我在一个页面上有多个表单 它们通过隐藏输入将 id 传递给控制器 由于我对这些视图使用强类型视图 因此我认为我需要保持每个视图的 Id 相同 它目前有效 但我认为这是不好的做法 我应该如何处理这个问题 在 Django 中有表单前缀值 是否
  • React Native 对 fetch 的缓存行为是什么

    目前 React Native 的默认缓存行为是什么fetch打电话 官方 FB 指南只是说 看看 Mozilla 但我们使用的不是网络浏览器 我假设缓存行为是由于中间件而自定义的 假设我这样做 fetch https exampleser
  • 使用 postmessage 发回消息

    我目前正在制作一个应用程序 需要在两个域之间发送信息 将在页面加载时 网站1 创建 iFrame gt 向网站 2 发送 Postmessage window onload function iframe document createEl
  • 如果客户端在服务器之后启动,则 GStreamer v1.0 UDP 多播流无法正确解码

    我正在尝试使用 GStreamer 进行 UDP 多播屏幕流传输 我的投屏服务器应该在 Windows 上运行 and my 客户端应在 Linux 上运行 如果我在服务器之前启动客户端 一切都很好 问题是当我启动客户端并且服务器已经启动时
  • asp.net 成员资格表中 Lowered* 列的意义是什么?

    ASP Net 成员资格和朋友的 SQL 架构中列名称以 Lowered 为前缀的架构原因是什么 下面是相关列的一些示例 aspnet Applications LoweredApplicationName aspnet users Low
  • 如何针对触摸设备优化网站

    在 iPhone iPad Android 等触摸设备上 用手指敲击小按钮可能很困难 据我所知 没有跨浏览器的方法可以通过 CSS 媒体查询来检测触摸设备 所以我检查浏览器是否支持 Javascript 触摸事件 到目前为止 其他浏览器尚不
  • 不同jenkins管道插件之间的区别

    我正在努力通过詹金斯为我的一个项目设置回归 我是詹金斯的新手 对这么多可用的管道插件有点困惑 仅举几例 管道插件 https wiki jenkins io display JENKINS Pipeline Plugin 构建管道插件 ht
  • 仅当尝试打开假定的缓存文件时,Hadoop 2 IOException

    我最近更新到 hadoop 2 2 使用本教程here http codesfusion blogspot com 2013 10 setup hadoop 2x 220 on ubuntu html m 1 我的主要作业类如下所示 并抛出