You need to resolve and bind the encoder. ExpressionEncoder<Row> enconder = RowEncoder.apply(struct).resolveAndBind();
Andy Dang wrote > Hi all, > (cc-ing dev since I've hit some developer API corner) > > What's the best way to convert an InternalRow to a Row if I've got an > InternalRow and the corresponding Schema. > > Code snippet: > @Test > public void foo() throws Exception { > Row row = RowFactory.create(1); > StructType struct = new StructType().add("id", > DataTypes.IntegerType); > ExpressionEncoder > <Row> > enconder = RowEncoder.apply(struct); > InternalRow internalRow = enconder.toRow(row); > System.out.println("Internal row size: " + > internalRow.numFields()); > Row roundTrip = enconder.fromRow(internalRow); > System.out.println("Round trip: " + roundTrip.size()); > } > > The code fails at the line encoder.fromRow() with the exception: >> Caused by: java.lang.UnsupportedOperationException: Cannot evaluate > expression: getcolumnbyordinal(0, IntegerType) > > ------- > Regards, > Andy ----- Liang-Chi Hsieh | @viirya Spark Technology Center http://www.spark.tc/ -- View this message in context: http://apache-spark-developers-list.1001551.n3.nabble.com/Converting-an-InternalRow-to-a-Row-tp20460p20465.html Sent from the Apache Spark Developers List mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe e-mail: dev-unsubscr...@spark.apache.org