Hi Fabian,
thank you for your help. I will try the CoGroup-function.
At the end of this email there is my program. I changed it and attach
therefore the stracktrace again. After the join I called union with the
myNull-DataSet. This DataSet was created by calling fromElements - so
not read from a file. The union-function then caused the showed
Exception and I didnt get any result. Without the union the programs
functions, but then it is an inner-join. Anyway I will try the
CoGroup-method.
Thank you again and best regards,
Alex
Error: The main method caused an error.
eu.stratosphere.client.program.ProgramInvocationException: The main
method caused an error.
at
eu.stratosphere.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:399)
at
eu.stratosphere.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:302)
at eu.stratosphere.client.program.Client.run(Client.java:246)
at
eu.stratosphere.client.CliFrontend.executeProgram(CliFrontend.java:327)
at eu.stratosphere.client.CliFrontend.run(CliFrontend.java:314)
at
eu.stratosphere.client.CliFrontend.parseParameters(CliFrontend.java:927)
at eu.stratosphere.client.CliFrontend.main(CliFrontend.java:951)
Caused by: eu.stratosphere.compiler.CompilerException: Error translating
node 'Union "Union" : UNION [[ GlobalProperties
[partitioning=HASH_PARTITIONED, on fields [2]] ]] [[ LocalProperties
[ordering=null, grouped=null, unique=null] ]]': null
at
eu.stratosphere.compiler.plantranslate.NepheleJobGraphGenerator.preVisit(NepheleJobGraphGenerator.java:355)
at
eu.stratosphere.compiler.plantranslate.NepheleJobGraphGenerator.preVisit(NepheleJobGraphGenerator.java:99)
at
eu.stratosphere.compiler.plan.DualInputPlanNode.accept(DualInputPlanNode.java:157)
at
eu.stratosphere.compiler.plan.DualInputPlanNode.accept(DualInputPlanNode.java:159)
at
eu.stratosphere.compiler.plan.SingleInputPlanNode.accept(SingleInputPlanNode.java:141)
at
eu.stratosphere.compiler.plan.OptimizedPlan.accept(OptimizedPlan.java:159)
at
eu.stratosphere.compiler.plantranslate.NepheleJobGraphGenerator.compileJobGraph(NepheleJobGraphGenerator.java:169)
at
eu.stratosphere.client.program.Client.getJobGraph(Client.java:222)
at eu.stratosphere.client.program.Client.run(Client.java:293)
at eu.stratosphere.client.program.Client.run(Client.java:288)
at
eu.stratosphere.client.program.ContextEnvironment.execute(ContextEnvironment.java:50)
at
de.hshannover.vis.flink.jobdb.A3NameWithBoss.main(A3NameWithBoss.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
eu.stratosphere.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:384)
... 6 more
Caused by: java.lang.NullPointerException
at
eu.stratosphere.pact.runtime.task.util.TaskConfig.setDriver(TaskConfig.java:291)
at
eu.stratosphere.compiler.plantranslate.NepheleJobGraphGenerator.createDualInputVertex(NepheleJobGraphGenerator.java:812)
at
eu.stratosphere.compiler.plantranslate.NepheleJobGraphGenerator.preVisit(NepheleJobGraphGenerator.java:303)
... 22 more
package de.hshannover.vis.flink.jobdb;
import java.util.ArrayList;
import java.util.List;
import de.hshannover.vis.flink.jobdb.mapper.EmployeeMapper;
import de.hshannover.vis.flink.jobdb.utils.IParameter;
import de.hshannover.vis.flink.jobdb.utils.Loader;
import de.hshannover.vis.flink.jobdb.utils.OutputPath;
import eu.stratosphere.api.java.DataSet;
import eu.stratosphere.api.java.ExecutionEnvironment;
import eu.stratosphere.api.java.functions.*;
import eu.stratosphere.api.java.tuple.*;
public class A3NameWithBoss {
@SuppressWarnings({ "unchecked", "serial" })
public static void main(String[] args) throws Exception {
List<IParameter> list = new ArrayList<IParameter>();
list.add(new EmployeeMapper());
list.add(new OutputPath("Output", ""));
Loader loader = new Loader(list, args);
loader.load();
// set up the execution environment
final ExecutionEnvironment env = ExecutionEnvironment
.getExecutionEnvironment();
// get input data
DataSet<Tuple3<String, Integer, Integer>> names =
loader.data.get(0).map(
new MapFunction<Tuple11
<Integer,String,String,String,String,String,String,Integer,Double,Integer,Integer>
, Tuple3<String,Integer,Integer>>() {
public Tuple3<String,Integer,Integer> map(Tuple11
<Integer,String,String,String,String,String,String,Integer,Double,Integer,Integer>
line) throws Exception {
return new
Tuple3<String,Integer,Integer>(line.f1 + " " + line.f2, line.f0,
line.f9);
}
});
DataSet<Tuple3<String, Integer, Integer>> myNull = env
.fromElements(new Tuple3<String, Integer, Integer>("-1",
new Integer(-1), new Integer(-1)));
names = names.union(myNull);
DataSet<Tuple2<String, String>> result = names.join(names).where(2)
.equalTo(1).projectFirst(0).projectSecond(0)
.types(String.class, String.class);
// emit result
result.writeAsCsv(loader.output.get(0).getPath(), "\n", " | ");
// execute program
env.execute(A3NameWithBoss.class.toString());
}
}