[
https://issues.apache.org/jira/browse/FLINK-3850?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15729014#comment-15729014
]
Fabian Hueske commented on FLINK-3850:
--------------------------------------
The annotations do not need to be code generated.
They should be added as Strings to the DataSet operators defined in the
`DataSetRel.translateToPlan()` methods.
For example, given a DataSetCalc that has the input and output type
{{Row(firstName, LastName, age)}} and multiplies the age fields (firstName and
lastName are constant and forwarded), should have have the forwarded fields
annotation {{"firstName", "lastName"}} and add it to the flatMap call like this
{code}
inputDS.flatMap(mapFunc)
.withForwardedFields("firstName", "lastName")
.name(calcOpName(calcProgram, getExpressionString))
{code}
> Add forward field annotations to DataSet operators generated by the Table API
> -----------------------------------------------------------------------------
>
> Key: FLINK-3850
> URL: https://issues.apache.org/jira/browse/FLINK-3850
> Project: Flink
> Issue Type: Improvement
> Components: Table API & SQL
> Reporter: Fabian Hueske
> Assignee: Nikolay Vasilishin
>
> The DataSet API features semantic annotations [1] to hint the optimizer which
> input fields an operator copies. This information is valuable for the
> optimizer because it can infer that certain physical properties such as
> partitioning or sorting are not destroyed by user functions and thus generate
> more efficient execution plans.
> The Table API is built on top of the DataSet API and generates DataSet
> programs and code for user-defined functions. Hence, it knows exactly which
> fields are modified and which not. We should use this information to
> automatically generate forward field annotations and attach them to the
> operators. This can help to significantly improve the performance of certain
> jobs.
> [1]
> https://ci.apache.org/projects/flink/flink-docs-release-1.0/apis/batch/index.html#semantic-annotations
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)