我在java中运行mapreduce程序,它编译成功,但在运行时我使用的是EC2上的Hortonworks HDP2.0。
package edu.osu.cse.ysmart.TestQuery;
import java.io.IOException;
import java.util.*;
import java.text.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.MultipleOutputs;
import org.apache.hadoop.mapreduce.lib.partition.*;
public class TestQuery1 extends Configured implements Tool{
public static class Map extends Mapper<Object, Text,NullWritable,Text>{
public void map(Object key, Text value, Context context) throws IOException,InterruptedException{
String line = value.toString();
String[] line_buf = new String[3];
int prev=0,i=0,n=0;
for(i=0,n=0,prev=0;i<line.length();i++){
if (line.charAt(i) == '|'){
line_buf[n] = line.substring(prev,i);
n = n+1;
prev = i+1;
}
if(n == 3)
break;
}
if(n<3)
line_buf[n] = line.substring(prev,i);
if(line_buf[2].compareTo("Abid Khan") == 0){
NullWritable key_op = NullWritable.get();
context.write(key_op , new Text(line_buf[1]+ "|" ));
}
}
}
public int run(String[] args) throws Exception{
Configuration conf = new Configuration();
Job job = new Job(conf,"TestQuery1");
job.setJarByClass(TestQuery1.class);
job.setMapOutputKeyClass(NullWritable.class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(NullWritable.class);
job.setOutputValueClass(Text.class);
job.setMapperClass(Map.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
return (job.waitForCompletion(true) ? 0 : 1);
}
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new Configuration(), new TestQuery1(), args);
System.exit(res);
}
}
好心的帮助
从异常跟踪中可以看出,您试图在空对象上调用一个方法:
attempt_1388768204803_0006_m_000000_0, Status : FAILED Error: java.lang.NullPointerException at edu.osu.cse.ysmart.TestQuery.TestQuery1$Map.map(TestQuery1.java:42) at
从源代码来看,以下比较失败:
if(line_buf[2].compareTo("Abid Khan") == 0)
未填充line_buf[2],因此出现空指针异常。您可以在if条件之前打印line_buf[2]的值,以查看是否有值。这将帮助您调试问题。
> 我开发了一个javaFx应用程序,并在Mac的com.zenjava maven插件的帮助下创建了该应用程序的中间包。 bundle是用JDK:1.7.0_40.jdk创建的
嘿,伙计们,我正在跟踪http://www.tutorialspoint.com/hadoop/hadoop_mapreduce.htm。使用这个运行程序后 我收到以下错误: 2004年9月16日20:32:14警告用户。NativeCodeLoader:无法为您的平台加载本机hadoop库。。。在适用的情况下使用内置java类 2004年9月16日20:32:15信息配置。弃用:会话。id已弃用
嘿,伙计们,我试图ru我的模拟器,但当我运行它,它给我这个错误: “安装下列Android SDK包失败,因为某些许可证尚未被接受。构建-工具;30.0.2 Android SDK构建-工具30.0.2若要构建此项目,请接受SDK许可协议并使用Android Studio SDK管理器安装缺少的组件。或者,若要将许可协议从一个工作站转移到另一个工作站,请参见http://d.Android.com
在Android mobile上运行应用程序时出现此错误 正在调试模式下在DRA LX2上启动lib\main.dart...正在运行分级任务“Assemble Debug”...√build build\app\outputs\flutter-apk\app-debug.apk。正在安装build\app\outputs\flutter-apk\app.apk...错误:ADB退出,退出代码为1
错误:container_linux.go:247:启动容器进程导致“exec:\”-w\“:在$path中找不到可执行文件”c:\program files\docker toolbox\docker.exe:来自守护进程的错误响应:oci运行时错误:container_linux.go:247:启动容器进程导致“exec:\”-w\“:在$path中找不到可执行文件”。
开始调试时,出现以下错误: 正在启动lib\main。调试模式下ONEPLUS A5000上的dart。。。lib\main。dart:1E/AndroidRuntime(11211):以书面形式命名,pkgName:com。刚出现的包裹azabazar E/AndroidRuntime(11211):致命异常:主E/AndroidRuntime(11211):进程:com。刚出现的包裹阿扎巴扎,