Hi Yu Chen,

Apologies for the late reply. Thanks for your feedback and for emphasizing
the importance of this work for FLINK-33230. Looking forward to your
contributions.

Best,
Junrui

Junrui Lee <jrlee....@gmail.com> 于 2024年8月6日周二 22:05写道:

> Hi everyone,
>
> David, Zhu and I had an offline discussion about FLIP-468 and more. Here
> are the key points:
> 1. Flink lacks a stable public REST API for job submission. Such a public
> REST API will allow users to create and store compiled plans of jobs, and
> to directly submit/resumit these plans. It can be helpful for making job
> plans more stable across versions, speeding up job submission, and
> supporting version-less job submission clients.
> 2. FLIP-468 mainly focuses on how to enable JobMaster/Scheduler to see and
> understand StreamGraph. It is applicable for both SQL and DataStream jobs.
> This FLIP will modify the existing jobgraph submission REST API. But that
> is an internal API for Flink clients and the change will not affect users.
> Therefore, it does not conflict with the target of #1.
>
> The conclusion is:
> 1. We will continue with FLIP-468 as is.
> 2. Later we will consider how to introduce a pubic REST API for job
> submission. This will happen in another FLIP.
>
> Thanks David and Zhu for the inputs and thoughts.
> As the content of FLIP-468 is not changed, we will continue the voting
> using the previous voting ML[1].
>
> [1] https://lists.apache.org/thread/d7md9bprfhynjfq7vy8dqld2dn9lf0ob
>
> Best,
> Junrui
>
> David Morávek <d...@apache.org> 于 2024年7月30日周二 21:11写道:
>
>> Here is a summary of my current understanding, please correct me if it's
>> wrong.
>>
>> We currently have an API for submitting a list of transformations and
>> configurations called CompiledPlan. However, it is currently specific to
>> the SQL domain.
>>
>> In reviewing the follow-up FLIPs, it is evident that we are targeting
>> graph
>> changes exclusively for the SQL landscape. Implementing these changes for
>> the DataStream API may not be feasible, as we lack the semantic
>> information
>> needed to understand the underlying pipeline.
>>
>> There appear to be three main categories of issues:
>>
>> 1. JobGraph Changes: To recompute the JobGraph based on new evidence, we
>> need to have a clear understanding of the pipeline, which is likely
>> exclusive to SQL. This requires the use of SG/CompiledPlan.
>> 2. Partitioning Changes: These primarily involve key group redistributions
>> and do not necessitate changes to the JobGraph. Such optimizations can be
>> applied to both DataStream and SQL.
>> 3. Changes to WebUI: These changes can be addressed at the JobGraph level
>> by providing additional context to JsonPlan, without requiring
>> SG/CompiledPlan.
>>
>> Given these points, is it accurate to say that this FLIP is strictly
>> necessary for TableAPI/SQL jobs only?
>>
>> Best,
>> D.
>>
>> On Tue, Jul 30, 2024 at 11:25 AM Zhu Zhu <reed...@gmail.com> wrote:
>>
>> > Thanks for sharing the thoughts, David!
>> >
>> > IIUC, there are two goals to make the APIs used for RPCs as
>> > versionless as possible?
>> > 1. no version mismatch happens if no code changes
>> > 2. supports different versioned Flink clients and clusters
>> > The first goal can be achieved by explicitly assigning a
>> serialVersionUID
>> > to serializable classes, which is already required in Flink code style.
>> > Therefore, it should not be a major problem.
>> > The second goal requires introducing versioned serializers and rewriting
>> > classes to serialize. It can also bring benefits like better
>> performance.
>> > However, it is not limited to the job submission API. And it would
>> require
>> > a thorough and maybe complex design. Therefore, I think it's better to
>> do
>> > it in an individual FLIP.
>> >
>> > Regarding submitting a StreamGraph or a list of transformations with
>> > configuration, I think StreamGraph is simple enough. It contains fields
>> > like operators, partitioners and configuration, which are already
>> > serialized to JobGraph nowadays, which means there is little work and
>> > risk to turn it into a serializable. Directly serializing and submitting
>> > transformations is also acceptable at the first glance, but
>> > SinkTransformation seems to be a blocker, as Junrui just mentioned.
>> >
>> > Thanks,
>> > Zhu
>> >
>> > Junrui Lee <jrlee....@gmail.com> 于2024年7月30日周二 12:13写道:
>> >
>> > > Hi David,
>> > >
>> > > Thank you very much for your detailed explanation, which is crucial in
>> > > helping to further improve this FLIP.
>> > >
>> > > This FLIP is applicable to both batch and stream processing. For batch
>> > > processing, it can be used to optimize the StreamGraph (e.g.,
>> FLIP-469),
>> > > while for streaming, we can use the StreamGraph to show a detailed
>> > logical
>> > > plan at runtime (e.g., FLINK-33230) and potentially retain possible
>> > logical
>> > > topology optimizations in the future (e.g., performing intelligent
>> chain
>> > > breaks while ensuring state compatibility).
>> > >
>> > > Overall, whether based on the existing JobGraph or the proposed
>> > submission
>> > > based on StreamGraph, it is invisible to users, and its REST API is
>> > > internal because the JobGraph and StreamGraph are internal classes.
>> > > Although it is documented, we could consider removing it from the
>> > official
>> > > documentation.
>> > >
>> > > Regarding your mention of "making the RPC APIs as versionless as
>> > possible,"
>> > > I think your viewpoint is correct and highly valuable. I have
>> carefully
>> > > considered your suggestion of serializing a list of transformations
>> and a
>> > > configuration. This is indeed a step towards making the APIs used for
>> > RPCs
>> > > as versionless as possible.
>> > > However, I think this task is much more complex than serializing a
>> > > StreamGraph, as it requires ensuring that each subclass of
>> transformation
>> > > and its properties are serializable. This obviously adds a significant
>> > > amount of complexity. For example, the SinkTransformation includes
>> > > DataStream properties, which have many unserializable fields, such as
>> the
>> > > StreamExecutionEnvironment.
>> > > Moreover, this solution does not completely solve the problem of RPC
>> API
>> > > versioning.
>> > >
>> > > Therefore, as this FLIP does not truly change a public REST API, I
>> think
>> > we
>> > > can narrow down the scope of this FLIP a bit, focusing on how to
>> enable
>> > the
>> > > JM to see and operate on StreamGraph.
>> > > In my understanding, current proposal will not complicate the future
>> work
>> > > if Flink tries to make its REST API more versionless, e.g. directly
>> > submit
>> > > transformations. Instead, most of the work can be reused, like
>> creating
>> > > JobGraph at runtime.
>> > >
>> > > WDYT? Looking forward to your feedback
>> > >
>> > > Best,
>> > > Junrui
>> > >
>> > > David Morávek <d...@apache.org> 于2024年7月29日周一 21:34写道:
>> > >
>> > > > Hi all,
>> > > >
>> > > > My main concern is the absence of a comprehensive vision for how we
>> > could
>> > > > make this work for both Batch and Streaming. Right now, it feels
>> like
>> > the
>> > > > proposal is solely centered around very specific batch
>> optimizations.
>> > > >
>> > > > I’m inclined to support submitting StreamGraph because it could
>> already
>> > > > > provide the actual logical plan of the job at runtime. To be
>> honest,
>> > > I’m
>> > > > > not sure what additional benefits submitting Transformations would
>> > > bring
>> > > > > compared to StreamGraph. I would appreciate any insights that you
>> > might
>> > > > > offer on this matter.
>> > > >
>> > > >
>> > > > This FLIP actually proposes a new job representation, so it would be
>> > > great
>> > > > to learn from the mistakes of the JobGraph. The main drawback of the
>> > > > JobGraph is its very tight coupling with the particular Flink
>> version.
>> > > Even
>> > > > a small patch version difference between client and server can make
>> the
>> > > > JobGraph invalid due to the nature of Java Serializability.
>> StreamGraph
>> > > is
>> > > > exposed to an even bigger surface area with more internal data
>> > structures
>> > > > that have the potential to make this problem more visible.
>> > > >
>> > > > In general, it would be highly valuable to make the APIs used for
>> RPCs
>> > as
>> > > > versionless as possible. If you were to write a custom serializer
>> for
>> > the
>> > > > StreamGraph, you’d actually find that you don’t need more than a
>> list
>> > of
>> > > > transformations and a configuration. Passing those to the
>> > > > StreamGraphGenerator will produce a deterministic result. In this
>> case,
>> > > > you’ve limited the surface area of what you need to JavaSerialize to
>> > > > user-provided transformations, which is a pretty nice property.
>> > > >
>> > > > A list of transformations plus configuration is also the most
>> > > minimalistic
>> > > > common denominator across the APIs Flink offers (DataStream, Table,
>> > SQL).
>> > > > Additionally, it would be beneficial to make the submission data
>> > > structures
>> > > > immutable. This immutability would ensure the integrity and
>> consistency
>> > > of
>> > > > the job definitions throughout their lifecycle, reducing the risk of
>> > > > inadvertent modifications and making the system more robust.
>> > > >
>> > > > Best,
>> > > > D.
>> > > >
>> > > > On Sat, Jul 27, 2024 at 4:16 AM Yu Chen <yuchen.e...@gmail.com>
>> wrote:
>> > > >
>> > > > > Hi Junrui,
>> > > > >
>> > > > > Thanks for driving this. It’s really helpful for user to explore
>> the
>> > > job
>> > > > > they submitted.
>> > > > >
>> > > > > It's an important cornerstone of the FLINK-33230 since there are
>> no
>> > > > > stream-graph informations serialized.
>> > > > > I'd like to base on this flip to expose operator level metrics and
>> > the
>> > > > > presentation of stream-graphs on the web to enable fine-grained
>> > > > > observations for users, as mentioned in Future Work.
>> > > > >
>> > > > >
>> > > > > Best,
>> > > > > Yu Chen
>> > > > >
>> > > > >
>> > > > > > 2024年7月24日 16:03,Junrui Lee <jrlee....@gmail.com> 写道:
>> > > > > >
>> > > > > > Hi all,
>> > > > > >
>> > > > > > Thank you for all the feedback and suggestions so far. If there
>> are
>> > > no
>> > > > > > further comments, we will open the voting thread on Friday, July
>> > 26,
>> > > > > 2024.
>> > > > > >
>> > > > > > Best regards,
>> > > > > > Junrui
>> > > > > >
>> > > > > > Ron Liu <ron9....@gmail.com> 于2024年7月24日周三 13:43写道:
>> > > > > >
>> > > > > >> Hi, Junrui
>> > > > > >>
>> > > > > >> Thanks for your detailed reply.
>> > > > > >>
>> > > > > >> After reading the updated FLIP-468 & FLIP-470, I see that the
>> > design
>> > > > > looks
>> > > > > >> good.
>> > > > > >>
>> > > > > >>
>> > > > > >> Best.
>> > > > > >> Ron
>> > > > > >>
>> > > > > >> Junrui Lee <jrlee....@gmail.com> 于2024年7月18日周四 14:26写道:
>> > > > > >>
>> > > > > >>> Hi all,
>> > > > > >>>
>> > > > > >>> I would like to follow up on my previous email regarding your
>> > > > feedback.
>> > > > > >>> Below
>> > > > > >>> is a concise summary of my main points:
>> > > > > >>>
>> > > > > >>> 1. Compiled Plan:
>> > > > > >>> IIUC, the compiled plan is primarily for ensuring execution
>> plan
>> > > > > >>> compatibility across job versions (e.g., during upgrades).
>> > > > Eventually,
>> > > > > it
>> > > > > >>> needs to be converted to StreamGraph for submission.
>> Persisting
>> > > > > >>> StreamGraph/JobGraph is for supporting high availability in jm
>> > > > failover
>> > > > > >>> scenarios.
>> > > > > >>>
>> > > > > >>> 2. JobGraph vs StreamGraph Submission:
>> > > > > >>> For users, whether to submit JobGraph or StreamGraph is mostly
>> > > > > >> transparent.
>> > > > > >>> In the client mode, this detail is hidden from users. The REST
>> > API
>> > > > > >> (/jobs)
>> > > > > >>> was originally serving the internal JobGraph class, intended
>> for
>> > > the
>> > > > > >> Flink
>> > > > > >>> client, not as a strict public API.
>> > > > > >>>
>> > > > > >>> 3. Runtime SQL Optimization:
>> > > > > >>> To facilitate runtime SQL-related optimization, we will
>> > introduce a
>> > > > > >>> strategy mechanism called StreamGraphOptimizationStrategy. SQL
>> > can
>> > > > > >>> implement specific strategies, such as
>> > > > > >>> AdaptiveBroadcastJoinOptimizationStrategy. More details are
>> > > available
>> > > > > in
>> > > > > >>> FLIP-469 [1].
>> > > > > >>>
>> > > > > >>> 4. Persistence Strategy:
>> > > > > >>> Initially, we can retain the JobGraph persistence method to
>> > ensure
>> > > it
>> > > > > >> does
>> > > > > >>> not affect stream jobs. After the new method is validated in
>> > batch
>> > > > > >>> processing scenarios over several versions, we can unify the
>> > stream
>> > > > > jobs
>> > > > > >> to
>> > > > > >>> also use StreamGraph persistence.
>> > > > > >>>
>> > > > > >>> Your thoughts and insights on these points would be highly
>> > > > appreciated.
>> > > > > >>>
>> > > > > >>> [1]
>> > > > > >>>
>> > > > > >>>
>> > > > > >>
>> > > > >
>> > > >
>> > >
>> >
>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-469%3A+Supports+Adaptive+Optimization+of+StreamGraph
>> > > > > >>>
>> > > > > >>> Best regards,
>> > > > > >>>
>> > > > > >>> Junrui
>> > > > > >>>
>> > > > > >>> Junrui Lee <jrlee....@gmail.com> 于2024年7月12日周五 20:29写道:
>> > > > > >>>
>> > > > > >>>> Hi all,
>> > > > > >>>>
>> > > > > >>>> Thanks for your feedback. Below are my thoughts on the
>> questions
>> > > > > you've
>> > > > > >>>> raised
>> > > > > >>>>
>> > > > > >>>> @Fabian
>> > > > > >>>>
>> > > > > >>>> - What is the future plan for job submissions in Flink? With
>> the
>> > > > > >> current
>> > > > > >>>>> proposal, Flink will support JobGraph/StreamGraph/compiled
>> plan
>> > > > > >>>>> submissions? It might be confusing for users and complicate
>> the
>> > > > > >> existing
>> > > > > >>>>> job submission logic significantly.
>> > > > > >>>>
>> > > > > >>>>
>> > > > > >>>> In my view, Flink should support submissions via StreamGraph
>> > and,
>> > > > > >>>> eventually, remove support for JobGraph submissions. As for
>> the
>> > > > > >> compiled
>> > > > > >>>> plan, I consider it to be a concept related to table/sql,
>> which
>> > > also
>> > > > > >>> needs
>> > > > > >>>> to be compiled into the corresponding StreamGraph (a more
>> > > > generalized
>> > > > > >>>> concept, applicable as well to DataStream API jobs) upon
>> > > submission.
>> > > > > >>>> In this FLIP, considering to provide a smoother migration for
>> > > users,
>> > > > > >> and
>> > > > > >>>> recognizing that currently, a vast number of Flink UT/IT
>> cases
>> > > > depend
>> > > > > >> on
>> > > > > >>>> the submission of a specialized JobGraph to achieve test
>> > > objectives,
>> > > > > >>>> transitioning these test cases and replacing with StreamGraph
>> > > would
>> > > > be
>> > > > > >> a
>> > > > > >>>> highly risky and complicated action. Therefore, I am inclined
>> > not
>> > > to
>> > > > > >>>> eliminate the pathway of submitting JobGraph within this
>> FLIP.
>> > > > > >>>>
>> > > > > >>>> How do we plan to connect the optimizer with Flink's runtime?
>> > > > > >>>>
>> > > > > >>>> @Ron
>> > > > > >>>>
>> > > > > >>>>> For batch scenario, if we want to better support dynamic
>> plan
>> > > > tuning
>> > > > > >>>>> strategies, the fundamental solution is still to put SQL
>> > > Optimizer
>> > > > to
>> > > > > >>>>> flink-runtime.
>> > > > > >>>>
>> > > > > >>>>
>> > > > > >>>> Our current solution is to abstract an interface called
>> > > > > >>>> StreamGraphOptimizationStrategy. For table-related
>> optimization
>> > > > > >>> strategies,
>> > > > > >>>> taking the Broadcast Join concept as an example, we can
>> > implement
>> > > an
>> > > > > >>>> AdaptiveBroadcastJoinOptimizationStrategy at the table layer.
>> > When
>> > > > > this
>> > > > > >>>> strategy is needed, during SQL compilation, we will set the
>> > > > > >> configuration
>> > > > > >>>> item
>> > > execution.batch.adaptive.stream-graph-optimization.strategies.
>> > > > > >> Then,
>> > > > > >>>> the runtime layer will load the corresponding Strategy class
>> > based
>> > > > on
>> > > > > >>> this
>> > > > > >>>> configuration item to be used at runtime.
>> > > > > >>>>
>> > > > > >>>> We will describe this part in the StreamGraphOptimizer
>> section
>> > of
>> > > > > >>>> FLIP-469, and the specific introduction of
>> > > > > >>>> AdaptiveBroadcastJoinOptimizationStrategy will be discussed
>> in
>> > > > > >> subsequent
>> > > > > >>>> FLIPs, which is expected to happen within a few days.
>> > > > > >>>>
>> > > > > >>>> @David
>> > > > > >>>>
>> > > > > >>>>> 1. Transformations in StreamGraphGenerator:*
>> > > > > >>>>>
>> > > > > >>>>
>> > > > > >>>> I'm inclined to support submitting StreamGraph because it
>> could
>> > > > > already
>> > > > > >>>> provide the actual logical plan of the job at runtime. To be
>> > > honest,
>> > > > > >> I'm
>> > > > > >>>> not sure what additional benefits submitting Transformations
>> > would
>> > > > > >> bring
>> > > > > >>>> compared to StreamGraph. I would appreciate any insights that
>> > you
>> > > > > might
>> > > > > >>>> offer on this matter.
>> > > > > >>>>
>> > > > > >>>> *2. StreamGraph for Recovery Purposes:
>> > > > > >>>>
>> > > > > >>>>
>> > > > > >>>> In fact, this conflicts with our desire to make adaptive
>> > > > optimization
>> > > > > >> to
>> > > > > >>>> the StreamGraph at runtime, as under such scenarios, the
>> > > StreamGraph
>> > > > > is
>> > > > > >>> the
>> > > > > >>>> complete expression of a job's logic, not the JobGraph. More
>> > > details
>> > > > > >> can
>> > > > > >>>> refer to the specific details in FLIP-469.
>> > > > > >>>>
>> > > > > >>>> I have reviewed the code related to the JobGraphStore and
>> > > discovered
>> > > > > >> that
>> > > > > >>>> it can be extended to store both StreamGraph and JobGraph
>> > > > > >> simultaneously.
>> > > > > >>>> As for your concerns, can we consider the following: in batch
>> > > mode,
>> > > > we
>> > > > > >>> use
>> > > > > >>>> Job Recovery based on StreamGraph, whereas for stream mode,
>> we
>> > > > > continue
>> > > > > >>> to
>> > > > > >>>> use the original JobGraph recovery and the StreamGraph would
>> be
>> > > > > >> converted
>> > > > > >>>> to a JobGraph right at the beginning.
>> > > > > >>>>
>> > > > > >>>> 3. Moving Away from Java Serializables:
>> > > > > >>>>
>> > > > > >>>>
>> > > > > >>>> Are you suggesting that Java serialization has limitations,
>> and
>> > > that
>> > > > > we
>> > > > > >>>> should explore alternative serialization approaches? I agree
>> > that
>> > > > this
>> > > > > >>> is a
>> > > > > >>>> valuable consideration for the future. Do you think this
>> should
>> > be
>> > > > > >>> included
>> > > > > >>>> in this FLIP? I would prefer to address it as a separate
>> FLIP.
>> > > > > >>>>
>> > > > > >>>> Best,
>> > > > > >>>> Junrui
>> > > > > >>>>
>> > > > > >>>> David Morávek <david.mora...@gmail.com> 于2024年7月12日周五
>> 14:47写道:
>> > > > > >>>>
>> > > > > >>>>>>
>> > > > > >>>>>> For batch scenario, if we want to better support dynamic
>> plan
>> > > > tuning
>> > > > > >>>>>> strategies, the fundamental solution is still to put SQL
>> > > Optimizer
>> > > > > >> to
>> > > > > >>>>>> flink-runtime.
>> > > > > >>>>>
>> > > > > >>>>>
>> > > > > >>>>> One accompanying question is: how do you envision this to
>> work
>> > > for
>> > > > > >>>>> streaming where you need to ensure state compatibility after
>> > the
>> > > > plan
>> > > > > >>>>> change? FLIP-496 seems to only focus on batch.
>> > > > > >>>>>
>> > > > > >>>>> Best,
>> > > > > >>>>> D.
>> > > > > >>>>>
>> > > > > >>>>> On Fri, Jul 12, 2024 at 4:29 AM Ron Liu <ron9....@gmail.com
>> >
>> > > > wrote:
>> > > > > >>>>>
>> > > > > >>>>>> Hi, Junrui
>> > > > > >>>>>>
>> > > > > >>>>>> The FLIP proposal looks good to me.
>> > > > > >>>>>>
>> > > > > >>>>>> I have the same question as Fabian:
>> > > > > >>>>>>
>> > > > > >>>>>>> For join strategies, they are only
>> > > > > >>>>>> applicable when using an optimizer (that's currently not
>> part
>> > of
>> > > > > >>> Flink's
>> > > > > >>>>>> runtime) with the Table API or Flink SQL. How do we plan to
>> > > > connect
>> > > > > >>> the
>> > > > > >>>>>> optimizer with Flink's runtime?
>> > > > > >>>>>>
>> > > > > >>>>>> For batch scenario, if we want to better support dynamic
>> plan
>> > > > tuning
>> > > > > >>>>>> strategies, the fundamental solution is still to put SQL
>> > > Optimizer
>> > > > > >> to
>> > > > > >>>>>> flink-runtime.
>> > > > > >>>>>>
>> > > > > >>>>>> Best,
>> > > > > >>>>>> Ron
>> > > > > >>>>>>
>> > > > > >>>>>> David Morávek <d...@apache.org> 于2024年7月11日周四 19:17写道:
>> > > > > >>>>>>
>> > > > > >>>>>>> Hi Junrui,
>> > > > > >>>>>>>
>> > > > > >>>>>>> Thank you for drafting the FLIP. I really appreciate the
>> > > > direction
>> > > > > >>>>> it’s
>> > > > > >>>>>>> taking. We’ve discussed similar approaches multiple times,
>> > and
>> > > > > >> it’s
>> > > > > >>>>> great
>> > > > > >>>>>>> to see this progress.
>> > > > > >>>>>>>
>> > > > > >>>>>>> I have a few questions and thoughts:
>> > > > > >>>>>>>
>> > > > > >>>>>>>
>> > > > > >>>>>>> * 1. Transformations in StreamGraphGenerator:*
>> > > > > >>>>>>> Should we consider taking this a step further by working
>> on a
>> > > > list
>> > > > > >>> of
>> > > > > >>>>>>> transformations (inputs of StreamGraphGenerator)?
>> > > > > >>>>>>>
>> > > > > >>>>>>>    public StreamGraphGenerator(
>> > > > > >>>>>>>            List<Transformation<?>> transformations,
>> > > > > >>>>>>>            ExecutionConfig executionConfig,
>> > > > > >>>>>>>            CheckpointConfig checkpointConfig,
>> > > > > >>>>>>>            ReadableConfig configuration) {
>> > > > > >>>>>>>
>> > > > > >>>>>>> We could potentially merge ExecutionConfig and
>> > CheckpointConfig
>> > > > > >> into
>> > > > > >>>>>>> ReadableConfig. This approach might offer us even more
>> > > > > >> flexibility.
>> > > > > >>>>>>>
>> > > > > >>>>>>>
>> > > > > >>>>>>> *2. StreamGraph for Recovery Purposes:*
>> > > > > >>>>>>> Should we avoid using StreamGraph for recovery purposes?
>> The
>> > > > > >>> existing
>> > > > > >>>>>>> JG-based recovery code paths took years to perfect, and it
>> > > > doesn’t
>> > > > > >>>>> seem
>> > > > > >>>>>>> necessary to replace them. We only need SG for cases
>> where we
>> > > > want
>> > > > > >>> to
>> > > > > >>>>>>> regenerate the JG.
>> > > > > >>>>>>> Additionally, translating SG into JG before persisting it
>> in
>> > HA
>> > > > > >>> could
>> > > > > >>>>> be
>> > > > > >>>>>>> beneficial, as it allows us to catch potential issues
>> early
>> > on.
>> > > > > >>>>>>>
>> > > > > >>>>>>>
>> > > > > >>>>>>> * 3. Moving Away from Java Serializables:*
>> > > > > >>>>>>> It would be great to start moving away from Java
>> > Serializables
>> > > as
>> > > > > >>>>> much as
>> > > > > >>>>>>> possible. Could we instead define proper versioned
>> > serializers,
>> > > > > >>>>> possibly
>> > > > > >>>>>>> based on a well-defined protobuf blueprint? This change
>> could
>> > > > help
>> > > > > >>> us
>> > > > > >>>>>> avoid
>> > > > > >>>>>>> ongoing issues associated with Serializables.
>> > > > > >>>>>>>
>> > > > > >>>>>>> Looking forward to your thoughts.
>> > > > > >>>>>>>
>> > > > > >>>>>>> Best,
>> > > > > >>>>>>> D.
>> > > > > >>>>>>>
>> > > > > >>>>>>> On Thu, Jul 11, 2024 at 12:58 PM Fabian Paul <
>> > fp...@apache.org
>> > > >
>> > > > > >>>>> wrote:
>> > > > > >>>>>>>
>> > > > > >>>>>>>> Thanks for drafting this FLIP. I really like the idea of
>> > > > > >>>>> introducing a
>> > > > > >>>>>>>> concept in Flink that is close to a logical plan
>> submission.
>> > > > > >>>>>>>>
>> > > > > >>>>>>>> I have a few questions about the proposal and its future
>> > > > > >>>>> evolvability.
>> > > > > >>>>>>>>
>> > > > > >>>>>>>> - What is the future plan for job submissions in Flink?
>> With
>> > > the
>> > > > > >>>>>> current
>> > > > > >>>>>>>> proposal, Flink will support
>> JobGraph/StreamGraph/compiled
>> > > plan
>> > > > > >>>>>>>> submissions? It might be confusing for users and
>> complicate
>> > > the
>> > > > > >>>>>> existing
>> > > > > >>>>>>>> job submission logic significantly.
>> > > > > >>>>>>>> - The FLIP mentions multiple areas of optimization, first
>> > > > > >> operator
>> > > > > >>>>>>> chaining
>> > > > > >>>>>>>> and second dynamic switches between join strategies. I
>> think
>> > > > > >> from
>> > > > > >>> a
>> > > > > >>>>>> Flink
>> > > > > >>>>>>>> perspective, these are, at the moment, separate concerns.
>> > For
>> > > > > >>>>> operator
>> > > > > >>>>>>>> chaining, I agree with the current proposal, which is a
>> > > concept
>> > > > > >>> that
>> > > > > >>>>>>>> applies generally to Flink's runtime. For join
>> strategies,
>> > > they
>> > > > > >>> are
>> > > > > >>>>>> only
>> > > > > >>>>>>>> applicable when using an optimizer (that's currently not
>> > part
>> > > of
>> > > > > >>>>>> Flink's
>> > > > > >>>>>>>> runtime) with the Table API or Flink SQL. How do we plan
>> to
>> > > > > >>> connect
>> > > > > >>>>> the
>> > > > > >>>>>>>> optimizer with Flink's runtime?
>> > > > > >>>>>>>> - With table/SQL API we already expose a compiled plan to
>> > > > > >> support
>> > > > > >>>>>> stable
>> > > > > >>>>>>>> version upgrades. It would be great to explore a joined
>> plan
>> > > to
>> > > > > >>> also
>> > > > > >>>>>>> offer
>> > > > > >>>>>>>> stable version upgrades with a potentially persistent
>> > > > > >> streamgraph.
>> > > > > >>>>>>>>
>> > > > > >>>>>>>> Best,
>> > > > > >>>>>>>> Fabian
>> > > > > >>>>>>>>
>> > > > > >>>>>>>
>> > > > > >>>>>>
>> > > > > >>>>>
>> > > > > >>>>
>> > > > > >>>
>> > > > > >>
>> > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>

Reply via email to