You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Aljoscha Krettek (Jira)" <ji...@apache.org> on 2019/11/21 16:35:00 UTC

[jira] [Commented] (FLINK-14617) Dataset Parquet ClassCastException for SpecificRecord

    [ https://issues.apache.org/jira/browse/FLINK-14617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16979408#comment-16979408 ] 

Aljoscha Krettek commented on FLINK-14617:
------------------------------------------

Is there are longer stacktrace around that exception? I think it would help to see in what context the error occurs.

> Dataset Parquet ClassCastException for SpecificRecord
> -----------------------------------------------------
>
>                 Key: FLINK-14617
>                 URL: https://issues.apache.org/jira/browse/FLINK-14617
>             Project: Flink
>          Issue Type: Bug
>          Components: API / DataSet
>    Affects Versions: 1.8.0
>         Environment: {code:java}
>  {code}
>            Reporter: Dominik Wosiński
>            Priority: Major
>
> The following code runs smoothly when the _executionEnvironment_ is instance of _StreamExecutionEnvironment_:
> {code:java}
> val filePaths = //some links to s3 files
> val job = Job.getInstance()
> AvroReadSupport.setAvroDataSupplier(job.getConfiguration, classOf[AvroDataSupplierWithTimestampConversion])
> val avroParquetInputFormat = new AvroParquetInputFormat[GpsPointDTO]()
> val hadoopInputFormat = new HadoopInputFormat[Void, GpsPointDTO](avroParquetInputFormat, classOf[Void], classOf[GpsPointDTO], job)
> FileInputFormat.addInputPaths(job, filePaths.head)
> executionEnvironment.createInput(hadoopInputFormat).map(_._2).print(){code}
> But when the _ExecutionEnvironment_ is used instead of _StreamExecutionEnviroment,_ then the code throws the: 
> {code:java}
> Caused by: java.lang.ClassCastException: class org.apache.avro.generic.GenericData$Record cannot be cast to class com.company.GpsPointDTO (org.apache.avro.generic.GenericData$Record and com.company.GpsPointDTO are in unnamed module of loader 'app'){code}
> I don't think this is the expected behavior. 
> The code simply reads some files from S3. It has the _AvroSupplierWithTimestampConversion_ which is used to add timestamp conversion to _DateTime_, _GpsPointDTO_ is a class generated from Avro schema.
> EDIT: It seems to work fine for Dataset API, if I remove the setting of _avroDataSupplier_. Obviously, in such case I needed to change Avro schema to use timestamp as _long_.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)