You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@flink.apache.org by Anuj Jain <an...@gmail.com> on 2023/05/03 04:06:32 UTC

Query on class annotation like @Experimental

Hi Community,
I saw some flink classes annotated with
@Experimental
@PublicEvolving
@Internal

What do these annotations mean? Can I use these classes in production?
How the class APIs would evolve in future. Can they break backward
compatibility in terms of API declaration or implementation, in minor or
major Flink releases.

More specifically, I am trying to use AvroParquet reader/writers with File
source and sink operators and i saw some classes with these annotations like
AvroParquetWriters (@Experimental)
ParquetWriterFactory (@PublicEvolving  implements BulkWriter.Factory<T>)
BulkWriter (@PublicEvolving)
AvroParquetReaders (@Experimental)
AvroParquetRecordFormat (implements StreamFormat (@PublicEvolving))
StreamFormatAdapter (@Internal)
StreamFormat (@PublicEvolving)

Are they safe to use ?

Appreciate your feedback.

Regards
Anuj

Re: Query on class annotation like @Experimental

Posted by Anuj Jain <an...@gmail.com>.
Thanks for the clarification.

On Wed, May 3, 2023 at 1:16 PM Yangze Guo <ka...@gmail.com> wrote:

> Hi, Anuj,
>
> - Classes annotated with @Internal are not public API and thus might
> change across any two releases.
> - Classes annotated with @Experimental are for experimental use. They
> can be changed across any two releases as well.
> - Classes annotated with @PublicEvolving are intended for public use.
> They are stable across patch releases (1.17.0 and 1.17.1), but can be
> changed across minor releases (1.17.0 and 1.18.0).
>
> You can refer to [1] for more details.
>
> [1]
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-196%3A+Source+API+stability+guarantees
>
> Best,
> Yangze Guo
>
> On Wed, May 3, 2023 at 12:08 PM Anuj Jain <an...@gmail.com> wrote:
> >
> > Hi Community,
> > I saw some flink classes annotated with
> > @Experimental
> > @PublicEvolving
> > @Internal
> >
> > What do these annotations mean? Can I use these classes in production?
> > How the class APIs would evolve in future. Can they break backward
> compatibility in terms of API declaration or implementation, in minor or
> major Flink releases.
> >
> > More specifically, I am trying to use AvroParquet reader/writers with
> File source and sink operators and i saw some classes with these
> annotations like
> > AvroParquetWriters (@Experimental)
> > ParquetWriterFactory (@PublicEvolving  implements BulkWriter.Factory<T>)
> > BulkWriter (@PublicEvolving)
> > AvroParquetReaders (@Experimental)
> > AvroParquetRecordFormat (implements StreamFormat (@PublicEvolving))
> > StreamFormatAdapter (@Internal)
> > StreamFormat (@PublicEvolving)
> >
> > Are they safe to use ?
> >
> > Appreciate your feedback.
> >
> > Regards
> > Anuj
>

Re: Query on class annotation like @Experimental

Posted by Yangze Guo <ka...@gmail.com>.
Hi, Anuj,

- Classes annotated with @Internal are not public API and thus might
change across any two releases.
- Classes annotated with @Experimental are for experimental use. They
can be changed across any two releases as well.
- Classes annotated with @PublicEvolving are intended for public use.
They are stable across patch releases (1.17.0 and 1.17.1), but can be
changed across minor releases (1.17.0 and 1.18.0).

You can refer to [1] for more details.

[1] https://cwiki.apache.org/confluence/display/FLINK/FLIP-196%3A+Source+API+stability+guarantees

Best,
Yangze Guo

On Wed, May 3, 2023 at 12:08 PM Anuj Jain <an...@gmail.com> wrote:
>
> Hi Community,
> I saw some flink classes annotated with
> @Experimental
> @PublicEvolving
> @Internal
>
> What do these annotations mean? Can I use these classes in production?
> How the class APIs would evolve in future. Can they break backward compatibility in terms of API declaration or implementation, in minor or major Flink releases.
>
> More specifically, I am trying to use AvroParquet reader/writers with File source and sink operators and i saw some classes with these annotations like
> AvroParquetWriters (@Experimental)
> ParquetWriterFactory (@PublicEvolving  implements BulkWriter.Factory<T>)
> BulkWriter (@PublicEvolving)
> AvroParquetReaders (@Experimental)
> AvroParquetRecordFormat (implements StreamFormat (@PublicEvolving))
> StreamFormatAdapter (@Internal)
> StreamFormat (@PublicEvolving)
>
> Are they safe to use ?
>
> Appreciate your feedback.
>
> Regards
> Anuj