You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Jark Wu (JIRA)" <ji...@apache.org> on 2016/07/21 14:51:20 UTC
[jira] [Commented] (FLINK-4240) Cannot use expressions in Scala
Table API's groupBy method
[ https://issues.apache.org/jira/browse/FLINK-4240?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15387824#comment-15387824 ]
Jark Wu commented on FLINK-4240:
--------------------------------
It's not a bug I think as we cannot select a column not in Group By.
In this case we can rename the grouping field and it will work
{code}
val tblResult = input1.groupBy('a % 4 as 'd).select('d);
{code}
> Cannot use expressions in Scala Table API's groupBy method
> ----------------------------------------------------------
>
> Key: FLINK-4240
> URL: https://issues.apache.org/jira/browse/FLINK-4240
> Project: Flink
> Issue Type: Bug
> Components: Table API & SQL
> Affects Versions: 1.1.0
> Reporter: Till Rohrmann
>
> The following code fails even though it should be supported according to the documentation:
> {code}
> package com.dataartisans.batch
> import org.apache.flink.api.scala._
> import org.apache.flink.api.scala.table._
> import org.apache.flink.api.table.{Row, TableConfig, TableEnvironment}
> object ScalaSimpleTableAPIJob {
> def main(args: Array[String]): Unit = {
> val env = ExecutionEnvironment.getExecutionEnvironment
> val tblConfig = new TableConfig
> val tblEnv = TableEnvironment.getTableEnvironment(env, tblConfig)
> val input1Seq = 0 until 10 map {x => (x, ('a' + x).toChar.toString, x.toDouble)}
> val inputDS1 = env.fromCollection(input1Seq)
> val input1 = tblEnv.fromDataSet(inputDS1, 'a, 'b, 'c)
> // fails with org.apache.flink.api.table.ValidationException: cannot resolve [a] given input [('a % 4)]
> val tblResult = input1.groupBy('a % 4).select('a);
> val result = tblEnv.toDataSet[Row](tblResult)
> result.print()
> }
> }
> {code}
> {code}
> Exception in thread "main" org.apache.flink.api.table.ValidationException: cannot resolve [a] given input [('a % 4)]
> at org.apache.flink.api.table.plan.logical.LogicalNode.failValidation(LogicalNode.scala:143)
> at org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$validate$1.applyOrElse(LogicalNode.scala:87)
> at org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$validate$1.applyOrElse(LogicalNode.scala:84)
> at org.apache.flink.api.table.trees.TreeNode.postOrderTransform(TreeNode.scala:72)
> at org.apache.flink.api.table.plan.logical.LogicalNode.org$apache$flink$api$table$plan$logical$LogicalNode$$expressionPostOrderTransform$1(LogicalNode.scala:120)
> at org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$7$$anonfun$apply$1.apply(LogicalNode.scala:133)
> at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
> at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
> at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
> at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
> at scala.collection.AbstractTraversable.map(Traversable.scala:105)
> at org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$7.apply(LogicalNode.scala:132)
> at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
> at scala.collection.Iterator$class.foreach(Iterator.scala:727)
> at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
> at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
> at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
> at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
> at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
> at scala.collection.AbstractIterator.to(Iterator.scala:1157)
> at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
> at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
> at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
> at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
> at org.apache.flink.api.table.plan.logical.LogicalNode.expressionPostOrderTransform(LogicalNode.scala:137)
> at org.apache.flink.api.table.plan.logical.LogicalNode.validate(LogicalNode.scala:84)
> at org.apache.flink.api.table.plan.logical.Project.validate(operators.scala:57)
> at org.apache.flink.api.table.GroupedTable.select(table.scala:631)
> at com.dataartisans.batch.ScalaSimpleTableAPIJob$.main(ScalaSimpleTableAPIJob.scala:26)
> at com.dataartisans.batch.ScalaSimpleTableAPIJob.main(ScalaSimpleTableAPIJob.scala)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:497)
> at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)