Hello,
When using nested field expressions like “Account.Id" with nested rows, I get the following error, “This type (GenericType<org.apache.flink.types.Row>) cannot be used as key.” Is there a way to make nested field expressions work with nested rows? Thanks, Joshua |
Can you show a minimal example of the query you are trying to run?
Maybe Timo or Fabian (cc'd) can help. Nico On Friday, 7 July 2017 23:09:09 CEST Joshua Griffith wrote: > Hello, > > When using nested field expressions like “Account.Id" with nested rows, I > get the following error, “This type > (GenericType<org.apache.flink.types.Row>) cannot be used as key.” Is there > a way to make nested field expressions work with nested rows? > Thanks, > > Joshua |
Thank you for your response Nico. Below is a simple case where I’m trying to join on Row fields:
Executing the above yields the following error:
For my application I only have TypeInformation at runtime (before the execution graph is built). Is it possible to use Row fields in join operations or is there an error with my implementation? Joshua
|
Hi Joshua, thanks for reporting this issue. You code is fine but IMO there is a bug in the Scala DataSet API.I think this should be fix. I'll open a JIRA issue for that. You can explicitly declare types with implicits if you put the following lines above the lines in which you apply the rowFn on the DataSet. implicit val rowTpe: TypeInformation[Row] = new RowTypeInfo(When you do this, you can also remove move the ResultTypeQueryable interface from the MapFunction. Cheers, Fabian 2017-07-10 18:10 GMT+02:00 Joshua Griffith <[hidden email]>:
|
Hello Fabian,
Thank you for your response. I tried your recommendation but I’m getting the same issue. Here’s the altered MakeRow MapFunction I tried: class MakeRow extends MapFunction[(Integer, Integer), Row] { In stepping through the code execution, it looks like the problem is that Row.isKeyType() returns false. Any recommendations? Thanks, Joshua
|
I apologize, that was the wrong link. Here’s where the exception is thrown: https://github.com/apache/flink/blob/release-1.3.1-rc2/flink-core/src/main/java/org/apache/flink/api/common/operators/Keys.java#L329-L331
|
In reply to this post by Joshua Griffith
Hi, You have to add the implicit value in the main() method before you call .map(rowFn) and not in the MapFunction. Best, Fabian 2017-07-10 18:54 GMT+02:00 Joshua Griffith <[hidden email]>:
|
Indeed that worked. Thanks!
|
Free forum by Nabble | Edit this page |