Hi Shengkai,

Thanks for opening this discussion. I did a first brief pass over the FLIP
and I have a couple of questions/remarks:

* The FLIP is called "SQL Client Gateway", but isn't this a REST Gateway
which would be used by Flink's SQL Client (or other applications)?

* From a user perspective, I would have expected that we start with the
REST endpoint before explaining how we would integrate this into Flink. Now
it's quite hard to first understand what we want to offer to users and if
that will be sufficient for a first version.

* With Flink 1.15, we're introducing an OpenAPI specification [1]. Can we
also do this straight away for the REST Gateway?

* Should we introduce the REST Gateway as part of Flink's main repository?
Wouldn't we be better off to maintain this in a separate repository under
ASF? Ideally you would like to be able to support multiple Flink versions
with one version of the REST Gateway I think?

* There's no mention of Batch or Streaming in this concept. If I recall
correctly, the current Flink SQL Gateway can only support Batch. How will
we support Streaming? Will there be any requirement with JDBC, as there
currently is?

* I can imagine that if a user wants to use a REST Gateway, there's also a
strong need to combine this with a Catalog. Do you think this should be
part of this FLIP?

Best regards,

Martijn Visser
https://twitter.com/MartijnVisser82
https://github.com/MartijnVisser

[1]
https://nightlies.apache.org/flink/flink-docs-master/docs/ops/rest_api/#jobmanager

On Sun, 24 Apr 2022 at 05:29, Shengkai Fang <fskm...@gmail.com> wrote:

> Hi. Jiang.
>
> Thanks for your feedback!
>
> > Do the public interfaces of GatewayService refer to any service?
>
> We will only expose one GatewayService implementation. We will put the
> interface into the common package and the developer who wants to implement
> a new endpoint can just rely on the interface package rather than the
> implementation.
>
> > What's the behavior of SQL Client Gateway working on Yarn or K8S? Does
> the SQL Client Gateway support application or session mode on Yarn?
>
> I think we can support SQL Client Gateway to submit the jobs in
> application/sesison mode.
>
> > Is there any event trigger in the operation state machine?
>
> Yes. I have already updated the content and add more details about the
> state machine. During the revise, I found that I mix up the two concepts:
> job submission and job execution. In fact, we only control the submission
> mode at the gateway layer. Therefore, we don't need to mapping the
> JobStatus here. If the user expects that the synchronization behavior is to
> wait for the completion of the job execution before allowing the next
> statement to be executed, then the Operation lifecycle should also contains
> the job's execution, which means users should set `table.dml-sync`.
>
> > What's the return schema for the public interfaces of GatewayService?
> Like getTable interface, what's the return value schema?
>
> The API of the GatewayService return the java objects and the endpoint can
> organize the objects with expected schema. The return results is also list
> the section ComponetAPI#GatewayService#API. The return type of the
> GatewayService#getTable is `ContextResolvedTable`.
>
> > How does the user get the operation log?
>
> The OperationManager will register the LogAppender before the Operation
> execution. The Log Appender will hijack the logger and also write the log
> that related to the Operation to another files. When users wants to fetch
> the Operation log, the GatewayService will read the content in the file and
> return.
>
> Best,
> Shengkai
>
>
>
>
> Nicholas Jiang <nicholasji...@apache.org> 于2022年4月22日周五 16:21写道:
>
> > Hi Shengkai.
> >
> > Thanks for driving the proposal of SQL Client Gateway. I have some
> > knowledge of Kyuubi and have some questions about the design:
> >
> > 1.Do the public interfaces of GatewayService refer to any service? If
> > referring to HiveService, does GatewayService need interfaces like
> > getQueryId etc.
> >
> > 2.What's the behavior of SQL Client Gateway working on Yarn or K8S? Does
> > the SQL Client Gateway support application or session mode on Yarn?
> >
> > 3.Is there any event trigger in the operation state machine?
> >
> > 4.What's the return schema for the public interfaces of GatewayService?
> > Like getTable interface, what's the return value schema?
> >
> > 5.How does the user get the operation log?
> >
> > Thanks,
> > Nicholas Jiang
> >
> > On 2022/04/21 06:42:30 Shengkai Fang wrote:
> > > Hi, Flink developers.
> > >
> > > I want to start a discussion about the FLIP-91: Support Flink SQL
> > > Gateway[1]. Flink SQL Gateway is a service that allows users to submit
> > and
> > > manage their jobs in the online environment with the pluggable
> endpoints.
> > > The reason why we introduce the Gateway with pluggable endpoints is
> that
> > > many users have their preferences. For example, the HiveServer2 users
> > > prefer to use the gateway with HiveServer2-style API, which has
> numerous
> > > tools. However, some filnk-native users may prefer to use the REST API.
> > > Therefore, we propose the SQL Gateway with pluggable endpoint.
> > >
> > > In the FLIP, we also propose the REST endpoint, which has the similar
> > > APIs compared to the gateway in the ververica/flink-sql-gateway[2]. At
> > the
> > > last, we discuss how to use the SQL Client to submit the statement to
> the
> > > Gateway with the REST API.
> > >
> > > I am glad that you can give some feedback about FLIP-91.
> > >
> > > Best,
> > > Shengkai
> > >
> > > [1]
> > >
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-91%3A+Support+SQL+Client+Gateway
> > > [2] https://github.com/ververica/flink-sql-gateway
> > >
> >
>

Reply via email to