What do you think about something like:

env.fromElements(1, 2, 3)
.flatMap((Integer i, Collector<Integer> o) -> o.collect(i)).returns("Integer")
.print();

This looks to me like the most readable and user-friendly solution. We only need to change the internals of DataSet a little bit, such that a possible TypeExtractor Exception is stored temporarily and thrown by the operator that follows if "returns()" was not called.

Regards,
Timo


On 28.10.2014 15:34, Stephan Ewen wrote:
Is it possible to use a static method "hint" to create the hinting wrapper
function?

Something like

DataSet.map(hint( (x) -> x.toString() , String.class));

If we go for option (1), I would suggest to call the methods just "from"
and overload them for String, Class, and TypeInformation


Stephan


On Tue, Oct 28, 2014 at 3:27 PM, Timo Walther <fl...@twalthr.com> wrote:

Hi all,

currently the Eclipse JDT compiler was the only compiler that included
generic signatures for Lambda Expressions in class files which is necessary
to use them type-safe in Flink. Unfortunalely, this "feature" was
considered as a "bug" and had been thrown out with Eclipse 4.4.1. This is
why Lambdas do not work properly with the current version of Eclipse. I
have opened a bug for that (see https://bugs.eclipse.org/bugs/
show_bug.cgi?id=449063).

The question is: Independent of the decision of the Eclipse JDT team, how
do we want to deal with missing return type information?

Option 1)
Add a separate TypeInformation argument to each Java API operator. Leads
to blown up API...
.map((x)->x + 1, TypeInformation.fromString("Integer"))
.flatMap((in, out)->out.collect(in), TypeInformation.fromClass(
Integer.class))

Option 2)
Introduce a wrapper class which implements ResultTypeQueryable. Leads to
complicated syntax...
.map(TypeHint.map((x)->x + 1, "Integer"));
.map(TypeHint.map((x)->x + 1, Integer.class));

What are your opinions? Or any other ideas?


Regards,
Timo


Reply via email to