[
https://issues.apache.org/jira/browse/FLINK-2668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14744286#comment-14744286
]
Fabian Hueske commented on FLINK-2668:
--------------------------------------
This behavior is actually intended (not saying that this behavior is good or
intuitive).
By calling {{project()}} on a {{ProjectOperator}} you are extending the
projection, i.e., if you have a {{DataSet<Tuple3<Long, String, Double>> d}} and
call {{d2 = d.project(2,0)}} you get a {{ProjectOperator}} which returns a
{{DataSet<Tuple2<Double, Long>>}}. If you call on that operator {{d3 =
d2.project(0,1)}} you extend the current projection and produce a
{{DataSet<Tuple4<Double, Long, Long, String>>}}.
Can you share the code that produces the {{InvalidTypesException}}?
> ProjectOperator method to close projection
> ------------------------------------------
>
> Key: FLINK-2668
> URL: https://issues.apache.org/jira/browse/FLINK-2668
> Project: Flink
> Issue Type: Improvement
> Components: Java API
> Affects Versions: master
> Reporter: Greg Hogan
> Priority: Minor
>
> I have come across an issue in my code where I called project(...) on a
> DataSet which was already a ProjectOperator. Instead of reducing the number
> of fields from 2 to 1 this instead increased the number of fields from 2 to 3
> resulting in org.apache.flink.api.common.functions.InvalidTypesException:
> Input mismatch: Tuple arity '3' expected but was '1'. when processing the
> next operator.
> This can be resolved by adding an optional explicit call to conclude the
> projection, perhaps ProjectOperator.closeProjection(). Can this be done
> without creating a new no-op operator?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)