Max, thanks for confirming the Flink 2.0 behavior. With the latest
information, here are my suggestions

1) I am fine with deleting the old `FlinkSource` in the upcoming flink 2.0
module (but keeping them in flink 1.x modules). As discussed in a previous
thread, the new FLIP-27 source has been baked by users for 2 years. We
already switched SQL to the new FLIP-27 source in the Iceberg 1.7 release.
So far so good.

2) for FlinkSink, I would prefer to keep it around with flink 2.0 module.
Here are my reasons.
- new sink is still relatively young. Give it more time to bake and mature.
- Flink sink (for streaming ingestion) is probably a lot more widely used
than Flink source (for batch or streaming read). Hence, it is valuable to
be more conservative in the deprecation plan here.
- we can stop adding new features to the old FlinkSink and only contribute
to the new IcebergSink. that should reduce the maintenance burden.
- we can mark the FinkSink as deprecated for all flink versions once the
parity is achieved.


On Wed, Mar 12, 2025 at 7:09 AM Maximilian Michels <m...@apache.org> wrote:

> Hi JB,
>
> V3 is another topic, but it would be good to start looking into that.
>
> Hey Steven,
>
> Flink 2.0 actually did not remove the old interfaces, which was not
> what I expected when I started this conversation. Turns out, old
> interfaces have been moved to ".legacy" packages. I'm in the process
> of verifying they will continue to work as expected.
>
> It looks like we will still have the option to keep around the old
> source / sink implementations. However, I think it still makes sense
> to remove FlinkSource and FlinkSink in the Flink 2.0 code path. This
> will simplify the code base and avoid confusion for users in the long
> run. I don't see real value in bringing over legacy sources / sinks to
> a new Flink major release.
>
> -Max
>
> On Tue, Mar 11, 2025 at 10:46 PM Steven Wu <stevenz...@gmail.com> wrote:
> >
> > I assume Flink 2.0 will remove the old source and sink interfaces.
> >
> > With the above assumption (please correct me if I am wrong), here is
> what I would suggest for the next Iceberg release (1.9 or whichever version
> that lands the Flink 2.0 support).
> > - Flink 2.0 module - remove the old source and sink impls. we have no
> choice here.
> > - Flink 1.x modules - update the deprecation note for old `FlinkSource`
> that will be removed in Flink 2.0 support. add a similar deprecation node
> for old `FlinkSink`.
> >
> > We shouldn't remove the old `FlinkSource` and `FlinkSink` for the Flink
> 1.x modules. Allow users to continue to use them with Flink 1.x. Note that
> Iceberg supports 3 active Flink versions (currently 1.18, 1.19, 1.20). So
> old versions will be naturally retired over time. As Flink progresses with
> 2.0, 2.1, 2.2 (etc.), we may want to keep the support for the last Flink
> 1.x version a little longer based on the community feedback.
> >
> > Thanks,
> > Steven
> >
> > On Tue, Mar 11, 2025 at 8:48 AM Jean-Baptiste Onofré <j...@nanthrax.net>
> wrote:
> >>
> >> Hi Max
> >>
> >> Yes, it makes sense. Maybe I can help on that as I'm working on Spec
> >> V3 support in Flink (I did the default value, and I'm checking the new
> >> types now).
> >>
> >> Please let me know :)
> >>
> >> Thanks,
> >> Regards
> >> JB
> >>
> >> On Tue, Mar 11, 2025 at 11:23 AM Maximilian Michels <m...@apache.org>
> wrote:
> >> >
> >> > Hi JB,
> >> >
> >> > Yes, Flink 2.0 support ideally should land in Iceberg 1.9.
> >> >
> >> > Hi Rodrigo,
> >> >
> >> > +1 on closing the gap between the two sink implementations: FlinkSink
> >> > and IcebergSink. Thanks for helping to close that gap!
> >> >
> >> > Hi Steven,
> >> >
> >> > Good point on the "Remove by Iceberg 2.0" claim stated in FlinkSource.
> >> > We can keep it until Iceberg 2.0 in the Flink 1.X paths, but I would
> >> > propose to remove FlinkSource earlier than Iceberg 2.0 for the Flink
> >> > 2.X path. The reason is that it is not used by default for many
> >> > Iceberg versions. I think it is unlikely that users jumping on Flink
> >> > 2.0 will want to use it.
> >> >
> >> > As for removing FlinkSink, you're right that IcebergSink is relatively
> >> > new as a replacement. If we can keep it in the process of porting the
> >> > code, we may keep it around longer, but I suggest deprecating it and
> >> > scheduling it for removal in the Iceberg release following 1.9.
> >> >
> >> > To summarize, I'm proposing the following:
> >> >
> >> > Iceberg 1.9
> >> > - Remove FlinkSource in Flink 2.0 code path
> >> > - Deprecate FlinkSink for all supported Flink versions
> >> >
> >> > Iceberg > 1.9
> >> > - Remove FlinkSource for all supported Flink versions
> >> > - Remove FlinkSink for all supported Flink versions
> >> >
> >> > Does that sound right?
> >> >
> >> > Cheers,
> >> > Max
> >> >
> >> > On Thu, Mar 6, 2025 at 9:10 PM Steven Wu <stevenz...@gmail.com>
> wrote:
> >> > >
> >> > > > if Flink 2.0 release is going to release the old source and sink
> interfaces, t
> >> > >
> >> > > typo above: "release the old" -> "delete the old"
> >> > >
> >> > > On Thu, Mar 6, 2025 at 12:08 PM Steven Wu <stevenz...@gmail.com>
> wrote:
> >> > >>
> >> > >> There was a previous thread for the Flink source. The Javadoc
> deprecation note for the old `FlinkSource` currently says it will be
> removed in Iceberg 2.0 release
> >> > >> https://lists.apache.org/thread/27kcvo3p86pysk9wrggq4vphzo03sv3l
> >> > >>
> >> > >> Now regarding deprecating and removing the old `FlinkSink` in
> favor of the new `IcebergSink`, the new `IcebergSink` was added 6 months
> ago and released in Iceberg 1.7 (current release is 1.8). Not sure how many
> users have got a chance to use it. Ideally, I would like to have the new
> `IcebergSink` bake longer with more users running it in the production
> environments. There is also the parity problems that Rod mentioned.
> >> > >>
> >> > >> However, if Flink 2.0 release is going to release the old source
> and sink interfaces, then we will have no choice and remove the old source
> and sink implementations earlier than we originally planned/preferred.
> >> > >>
> >> > >>
> >> > >> On Thu, Mar 6, 2025 at 8:40 AM Rodrigo Meneses <rmene...@gmail.com>
> wrote:
> >> > >>>
> >> > >>> Hi Max, +1 on that too. IcebergSink has been hanging around for a
> while now. We want to make sure we have the same features, though:
> >> > >>>
> >> > >>> I’ve got https://github.com/apache/iceberg/pull/12071 that adds
> the Range Distribution Mode to IcebergSink. It still needs a few recent bug
> fixes and features backported, but it should be ready soon.
> >> > >>>
> >> > >>>
> >> > >>>
> >> > >>> On Thu, Mar 6, 2025 at 8:18 AM Jean-Baptiste Onofré <
> j...@nanthrax.net> wrote:
> >> > >>>>
> >> > >>>> Hi Max,
> >> > >>>>
> >> > >>>> I guess you are proposing to remove FlinkSink and the
> corresponding
> >> > >>>> FlinkSource as well.
> >> > >>>>
> >> > >>>> It makes to me as, I saw in the code, that both FlinkSink and
> >> > >>>> FlinkSource are deprecated for a while.
> >> > >>>>
> >> > >>>> So, +1 to remove it.
> >> > >>>>
> >> > >>>> Are you planning this for 1.9.0 ?
> >> > >>>>
> >> > >>>> Regards
> >> > >>>> JB
> >> > >>>>
> >> > >>>> On Thu, Mar 6, 2025 at 4:21 PM Maximilian Michels <
> m...@apache.org> wrote:
> >> > >>>> >
> >> > >>>> > Hi,
> >> > >>>> >
> >> > >>>> > Today there are two Flink write connectors in Iceberg:
> >> > >>>> >
> >> > >>>> > 1. FlinkSink (original sink, based on Flink legacy interfaces)
> >> > >>>> > 2. IcebergSink (newer version, based on modern Flink API)
> >> > >>>> >
> >> > >>>> > In terms of features, (1) is a subset of (2).
> >> > >>>> >
> >> > >>>> > I'm in the process of adding support for Flink 2.0. The
> interfaces
> >> > >>>> > used for (1) have been deprecated for several Flink versions
> and are
> >> > >>>> > removed / discouraged in Flink 2.0.
> >> > >>>> >
> >> > >>>> > Therefore, I would like to propose to remove FlinkSink for the
> Flink
> >> > >>>> > 2.0 Iceberg module. We have already deprecated FlinkSink for a
> while.
> >> > >>>> >
> >> > >>>> > Any objections?
> >> > >>>> >
> >> > >>>> > -Max
>

Reply via email to