[ https://issues.apache.org/jira/browse/FLINK-32398?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17735328#comment-17735328 ]
Jiangjie Qin commented on FLINK-32398: -------------------------------------- [~twalthr] [~jark] If this already works and I missed something, please let me know. Orthogonal to this ticket, the {{AvroSchemaConverter }}class is not marked as Public, but from the commit log it seems this should be a public API. Same issue is there for the other classes in the flink-avro package. Actually non of the classes / interfaces is marked as Public in the entire flink-avro package. > Support Avro SpecificRecord in DataStream and Table conversion. > --------------------------------------------------------------- > > Key: FLINK-32398 > URL: https://issues.apache.org/jira/browse/FLINK-32398 > Project: Flink > Issue Type: New Feature > Components: Formats (JSON, Avro, Parquet, ORC, SequenceFile) > Affects Versions: 1.17.1 > Reporter: Jiangjie Qin > Priority: Major > > At this point, it seems that Avro SpecificRecord is not supported in > DataStream and Table conversion. For example, the following code breaks when > MyAvroRecord contains fields of type Record, Enum, Array, etc. > > {code:java} > ing schemaString = MyAvroRecord.getClassSchema().toString(); > DataType dataType = AvroSchemaConverter.convertToDataType(schemaString); > TypeInformation<MyAvroRecord> typeInfo = > AvroSchemaConverter.convertToTypeInfo(schemaString);; > input.getTransformation().setOutputType(typeInfo); > tEnv.createTemporaryView("myTable", input); > Table result = tEnv.sqlQuery("SELECT * FROM myTable"); > DataStream<MyAvroRecord> output = tEnv.toDataStream(result, dataType); > output.getTransformation().setOutputType(typeInfo); {code} > > While the conversion from {{MyAvroRecord}} to {{RowData}} seems fine, several > issues were there when converting the {{RowData}} back to > {{{}MyAvroRecord{}}}, including but not limited to: > # {{AvroSchemaConverter.convertToDataType(schema)}} maps Avro Record type to > RowType, which loses the class information. > # {{AvroSchemaConverter}} maps Enum to StringType, and simply try to cast > the string to the Enum. > I did not find a way to easily convert the between DataStream and Table for > Avro SpecificRecord. Given the popularity of Avro SpecificRecord, we should > support this. -- This message was sent by Atlassian Jira (v8.20.10#820010)