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 <anuj...@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