Hi!
Is is pretty much as the exception says. In the current state, Flink does
(as Stratosphere did) support abstract types for the function signatures.
The reason is that we need to do some type instruction and inference to set
up our runtime utilities.
Caused by: eu.stratosphere.api.java.functions.InvalidTypesException:
Interfaces and abstract classes are not valid types
What you can do is use Type variables and bounds. This helps you with most
cases:
class MyGenericFilter<T extends AbstractType> implements FilterFunction<T> {
public boolean filter(T value) {
// inside here, you can assume all that "AbstractType" has
}
}
DataSet<ConcreteType> data = ...
data.filter( new MyGenericFilter<ConcreteType>() ).print();
Greetings,
Stephan
On Wed, Sep 17, 2014 at 8:18 PM, Rockstar Flo <[email protected]> wrote:
> Hello :)
>
> I get an InvalidTypesException while starting a stratosphere job. Could
> anyone help me?
> The code is in the attachment of this mail. I used the Version
> "stratosphere-0.5.1".
>
> I would welcome your response,
> Florian Hönicke
>
> xxx@xxx:~$ command time -o
> /home/hoenicke/stratosphere-0.5.1-hadoop2/zeitenKleinVernica.txt -a -f '%e'
> /home/hoenicke/stratosphere-0.5.1-hadoop2/bin/stratosphere run
> /home/hoenicke/stratosphere-0.5.1-hadoop2/jar/vernica.jar 0.9
> \file:///home/hoenicke/stratosphere-0.5.1-hadoop2/input/klein
> file:///home/hoenicke/stratosphere-0.5.1-hadoop2/output -v
> > 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:220)
> > 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.api.java.functions.InvalidTypesException:
> Interfaces and abstract classes are not valid types.
> > at
> eu.stratosphere.api.java.typeutils.TypeExtractor.getForClass(TypeExtractor.java:596)
> > at
> eu.stratosphere.api.java.typeutils.TypeExtractor.createTypeInfoWithTypeHierarchy(TypeExtractor.java:508)
> > at
> eu.stratosphere.api.java.typeutils.TypeExtractor.createTypeInfoWithTypeHierarchy(TypeExtractor.java:498)
> > at
> eu.stratosphere.api.java.typeutils.TypeExtractor.createTypeInfoWithTypeHierarchy(TypeExtractor.java:455)
> > at
> eu.stratosphere.api.java.typeutils.TypeExtractor.createTypeInfo(TypeExtractor.java:150)
> > at
> eu.stratosphere.api.java.typeutils.TypeExtractor.getFlatMapReturnTypes(TypeExtractor.java:57)
> > at
> eu.stratosphere.api.java.operators.FlatMapOperator.<init>(FlatMapOperator.java:38)
> > at eu.stratosphere.api.java.DataSet.flatMap(DataSet.java:155)
> > at eu.stratosphere.quickstart.VernicaJob.main(VernicaJob.java:43)
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > at java.lang.reflect.Method.invoke(Method.java:597)
> > at
> eu.stratosphere.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:384)
> > ... 6 more
> > xxx@xxx:~$
> >
>