繁体   English   中英

由于globStatus,MapReduce作业未产生输出

MapReduce Job not producing output due to globStatus

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我不确定为什么我的Mapper和Reducer没有输出。 我的代码背后的逻辑是,给定一个UUID文件(用新行分隔),我想使用globStatus显示UUID可能位于的所有潜在文件的所有路径。打开并读取该文件。 每个文件包含1-n行JSON。 UUID在JSON中的event_header.event_id中。

现在,MapReduce作业运行没有错误。 但是,出了点问题,因为我没有任何输出。 我不确定如何调试MapReduce作业。 如果有人可以提供给我一个很棒的资源! 该程序的预期输出应为

fee90c3f-e832-4267-aa9b-250f53kc06d3 1
914938ae-eed6-4dfa-81bf-71e67m42d93a 1
bbge6012-9c51-4ae1-9242-a4aaf08bfb36 1
e5a12493-gtrf-4ar4-9235-02fd3h580970 1
3b054300-09ba-4d59-a6ac-a0975ca74ed5 1
6fbb1c5g-15ce-4e6f-9236-55a9d9d6e2c6 1
ab4677a3-0f58-428c-8h58-5fe3dfe528dc 1
caaa011d-ahba-4ne7-9h05-3872f3k1854c 1

JSON示例:

{"event_header":{"version":"1.0","event_id":"fdk32k23-f7f6-412d-879d-f79b4c3b0d55","server_timestamp":1427734304673,"client_ip_address":"10.144.28.48","server_ip_address":"10.129.67.0"},"data_version":"1.0","application":{"properties":{}},"session":{"test":false,"user_id":"1121057496"},"event":{"timestamp":"1427734304577","event_category":"User","traffic":{"priority_code":"1728300000"},"event_id":"9ad26251-b940-408a-b6a9-0a825be1fd38","event_name":"Create"}}

在我的逻辑中,输出文件应该是UUID,在它们旁边是1,因为一旦找到,就写入1,如果找不到,则写入0。 它们应该全为1,因为我从源中提取了UUID。

我在for循环中添加了context.write(new Text("None"), new Text("blank")) ,发现没有任何内容写入输出中。 因此,我认为可以肯定地说,我使用了globStatus() 链接不正确。

我的Reducer当前不执行任何操作,只是我只想看看是否可以运行一些简单的逻辑。 我的代码中很可能存在错误,因为我不知道有一种调试MapReduce作业的简便方法。

司机:

public class SearchUUID {

    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "UUID Search");
        job.getConfiguration().set("mapred.job.queue.name", "exp_dsa");
        job.setJarByClass(SearchUUID.class);
        job.setMapperClass(UUIDMapper.class);
        job.setReducerClass(UUIDReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);
        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

UUIDMapper:

public class UUIDMapper extends Mapper<Object, Text, Text, Text> {
    public void map(Object key, Text value, Context context) throws IOException, InterruptedException {

        try {
            Text one = new Text("1");
            Text zero = new Text("0");

            FileSystem fs = FileSystem.get(new Configuration());
            FileStatus[] paths = fs.globStatus(new Path("/data/path/to/file/d_20150330-1650"));
            for (FileStatus path : paths) {
                BufferedReader br = new BufferedReader(new InputStreamReader(fs.open(path.getPath())));
                String json_string = br.readLine();
                while (json_string != null) {
                    JsonElement jelement = new JsonParser().parse(json_string);
                    JsonObject jsonObject = jelement.getAsJsonObject();
                    jsonObject = jsonObject.getAsJsonObject("event_header");
                    jsonObject = jsonObject.getAsJsonObject("event_id");

                    if (value.toString().equals(jsonObject.getAsString())) {
                        System.out.println(value.toString() + "slkdjfksajflkjsfdkljsadfk;ljasklfjklasjfklsadl;sjdf");
                        context.write(value, one);
                    } else {
                        context.write(value, zero);
                    }

                    json_string = br.readLine();
                }
            }
        } catch (IOException failed) {
        }
    }
}

减速器:

public class UUIDReducer extends Reducer<Text, Text, Text, Text>{

    public void reduce(Text key, Text value, Context context) throws IOException, InterruptedException{
        context.write(key, value);
    }
}
1 个回复

您是否在日志文件夹中检查过用户日志? 以下代码可以正常工作

jsonObject = jsonObject.getAsJsonObject(“ event_header”); jsonObject = jsonObject.getAsJsonObject(“ event_id”); 这行是不正确的使用jsonObject.get(“ event_header”)。getAsJsonObject(); jsonObject.get( “事项标识”)getAsJsonObject(); 问题在于获取event_header,event_id JSONOBJECT。

public class UUIDMapper extends Mapper < Object, Text, Text, Text > {
    public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
        try {
            Text one = new Text("1");
            Text zero = new Text("0");
            String json_string[] = {
                "your data", "your data", "your data", "your data "
            };
            int i = 0;
            while (i < json_string.length) {
                if (value.toString().equals(json_string[i])) {
                    context.write(value, one);
                } else {
                    context.write(value, zero);
                }
            }
        } catch (Exception t) {
            t.printStackTrace();
        }
    }
}
1 Map reduce作业执行但不产生输出

请寻求帮助。 执行mapreduce作业,但不产生任何输出。 这是一个简单的程序,可以计算文件中单词的总数。 我开始非常简单地确保它可以与包含以下内容的一行的txt文件一起使用: 小国第二大国第二小食品出口国第二第二 不幸的是,没有,关于下一个看点的任何建议将不胜感激。 ...

2 MapReduce作业:奇怪的输出?

我正在写我的第一份MapReduce工作。 简单的事情:只计算文件中的字母数字字符。 我已经完成了生成我的jar文件并运行它的工作,但是除了调试输出之外,我找不到MR作业的输出。 请你帮助我好吗? 我的应用程序类: 然后我的映射器类: 减速器: 看起来不错,我 ...

3 如何收集mapreduce作业的输出?

我试着在mapreduce中编写一个简单的字数统计程序。 我的mapreduce程序只将输出写入文件。 但我不希望我的输出写在文件中。 我想收集在我的其余程序区域中使用的信息或输出(如java集合)。 就像例如,如果我在hive上提交任何查询,它返回一个结果集对象,但在内部我的查询将 ...

4 MapReduce不产生输出

我想在文本文件上执行一个简单的MapReduce,但是它没有输出。 这是我的代码: 我在执行jar文件的过程中收到以下错误消息: 我的代码有什么问题? 我在Hadoop 14.04和Hadoop 2.4下 ...

5 我的MapReduce程序产生零输出

输出文件夹中有part-00000文件,没有内容! 这是我看不到异常的命令跟踪, 以下是我的MR代码, 这是我的第一个MapReduce程序,我无法找到它不产生输出的原因! 请让我知道我的代码中是否存在任何问题,或者是否有运行MapReduce作业以获取输出的更好方法。 ...

6 mapreduce作业未运行

我正在尝试运行mapreduce但能够运行低于错误 请注意,经过上述验证后,我已经检查了编号20620949和toster.ru/q/57046#answer_208326的问题以及其他许多相关问题。如果我的本地计算机中未安装Ifound纱线,请让我知道在MR中运行MR作业需要纱线一台机 ...

7 Mapreduce作业未运行

在伪分布式模式下安装和配置hadoop 2.7.1之后,一切都在运行,如您在 比我跑mapreduce示例 和死刑犯(?) 2小时后,它显示相同。 请给任何想法.. 谢谢 ...

8 MapReduce程序不产生任何输出

我目前正在尝试从一些Twitter数据中解析小时数。 Twitter中的时间戳以秒为单位,我正在使用mapreduce程序来提取和汇总每个tweet发布的一天中的小时。 我的Java代码会编译,并且hadoop作业会运行,但是输出为空。 在查看了hadoop作业的详细信息之后,它告诉我合并 ...

9 使用MapReduce中的globStatus过滤输入文件

我有很多输入文件,我想根据最后附加的日期处理选定的文件。 我现在很困惑我在哪里使用globStatus方法来过滤掉文件。 我有一个自定义的RecordReader类,我试图在其下一个方法中使用globStatus,但它没有成功。 我知道它返回一个FileStatus数组,但我如何 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM