Hi Mason,

Thanks for your input!

> +1 for init containers or a more generalized way of obtaining arbitrary
> files. File fetching isn't specific to just SQL--it also matters for Java
> applications if the user doesn't want to rebuild a Flink image and just
> wants to modify the user application fat jar.

I agree that utilizing SQL Drivers in Java applications is equally important
as employing them in SQL Gateway. WRT init containers, I think most
users use them just as a workaround. For example, wget a jar from the 
maven repo.

We could implement the functionality in SQL Driver in a more graceful
way and the flink-supported filesystem approach seems to be a 
good choice.

> Also, what do you think about prefixing the config options with
> `sql-driver` instead of just `sql` to be more specific?

LGTM, since SQL Driver is a public interface and the options are
specific to it.

Best,
Paul Lam

> 2023年6月6日 06:30,Mason Chen <mas.chen6...@gmail.com> 写道:
> 
> Hi Paul,
> 
> +1 for this feature and supporting SQL file + JSON plans. We get a lot of
> requests to just be able to submit a SQL file, but the JSON plan
> optimizations make sense.
> 
> +1 for init containers or a more generalized way of obtaining arbitrary
> files. File fetching isn't specific to just SQL--it also matters for Java
> applications if the user doesn't want to rebuild a Flink image and just
> wants to modify the user application fat jar.
> 
> Please note that we could reuse the checkpoint storage like S3/HDFS, which
>> should
> 
> be required to run Flink in production, so I guess that would be acceptable
>> for most
> 
> users. WDYT?
> 
> 
> If you do go this route, it would be nice to support writing these files to
> S3/HDFS via Flink. This makes access control and policy management simpler.
> 
> Also, what do you think about prefixing the config options with
> `sql-driver` instead of just `sql` to be more specific?
> 
> Best,
> Mason
> 
> On Mon, Jun 5, 2023 at 2:28 AM Paul Lam <paullin3...@gmail.com 
> <mailto:paullin3...@gmail.com>> wrote:
> 
>> Hi Jark,
>> 
>> Thanks for your input! Please see my comments inline.
>> 
>>> Isn't Table API the same way as DataSream jobs to submit Flink SQL?
>>> DataStream API also doesn't provide a default main class for users,
>>> why do we need to provide such one for SQL?
>> 
>> Sorry for the confusion I caused. By DataStream jobs, I mean jobs submitted
>> via Flink CLI which actually could be DataStream/Table jobs.
>> 
>> I think a default main class would be user-friendly which eliminates the
>> need
>> for users to write a main class as SQLRunner in Flink K8s operator [1].
>> 
>>> I thought the proposed SqlDriver was a dedicated main class accepting
>> SQL files, is
>>> that correct?
>> 
>> Both JSON plans and SQL files are accepted. SQL Gateway should use JSON
>> plans,
>> while CLI users may use either JSON plans or SQL files.
>> 
>> Please see the updated FLIP[2] for more details.
>> 
>>> Personally, I prefer the way of init containers which doesn't depend on
>>> additional components.
>>> This can reduce the moving parts of a production environment.
>>> Depending on a distributed file system makes the testing, demo, and local
>>> setup harder than init containers.
>> 
>> Please note that we could reuse the checkpoint storage like S3/HDFS, which
>> should
>> be required to run Flink in production, so I guess that would be
>> acceptable for most
>> users. WDYT?
>> 
>> WRT testing, demo, and local setups, I think we could support the local
>> filesystem
>> scheme i.e. file://** as the state backends do. It works as long as SQL
>> Gateway
>> and JobManager(or SQL Driver) can access the resource directory (specified
>> via
>> `sql-gateway.application.storage-dir`).
>> 
>> Thanks!
>> 
>> [1]
>> https://github.com/apache/flink-kubernetes-operator/blob/main/examples/flink-sql-runner-example/src/main/java/org/apache/flink/examples/SqlRunner.java
>> [2]
>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-316:+Introduce+SQL+Driver
>> [3]
>> https://github.com/apache/flink/blob/3245e0443b2a4663552a5b707c5c8c46876c1f6d/flink-runtime/src/test/java/org/apache/flink/runtime/state/filesystem/AbstractFileCheckpointStorageAccessTestBase.java#L161
>> 
>> Best,
>> Paul Lam
>> 
>>> 2023年6月3日 12:21,Jark Wu <imj...@gmail.com> 写道:
>>> 
>>> Hi Paul,
>>> 
>>> Thanks for your reply. I left my comments inline.
>>> 
>>>> As the FLIP said, it’s good to have a default main class for Flink SQLs,
>>>> which allows users to submit Flink SQLs in the same way as DataStream
>>>> jobs, or else users need to write their own main class.
>>> 
>>> Isn't Table API the same way as DataSream jobs to submit Flink SQL?
>>> DataStream API also doesn't provide a default main class for users,
>>> why do we need to provide such one for SQL?
>>> 
>>>> With the help of ExecNodeGraph, do we still need the serialized
>>>> SessionState? If not, we could make SQL Driver accepts two serialized
>>>> formats:
>>> 
>>> No, ExecNodeGraph doesn't need to serialize SessionState. I thought the
>>> proposed SqlDriver was a dedicated main class accepting SQL files, is
>>> that correct?
>>> If true, we have to ship the SessionState for this case which is a large
>>> work.
>>> I think we just need a JsonPlanDriver which is a main class that accepts
>>> JsonPlan as the parameter.
>>> 
>>> 
>>>> The common solutions I know is to use distributed file systems or use
>>>> init containers to localize the resources.
>>> 
>>> Personally, I prefer the way of init containers which doesn't depend on
>>> additional components.
>>> This can reduce the moving parts of a production environment.
>>> Depending on a distributed file system makes the testing, demo, and local
>>> setup harder than init containers.
>>> 
>>> Best,
>>> Jark
>>> 
>>> 
>>> 
>>> 
>>> On Fri, 2 Jun 2023 at 18:10, Paul Lam <paullin3...@gmail.com 
>>> <mailto:paullin3...@gmail.com> <mailto:
>> paullin3...@gmail.com <mailto:paullin3...@gmail.com>>> wrote:
>>> 
>>>> The FLIP is in the early phase and some details are not included, but
>>>> fortunately, we got lots of valuable ideas from the discussion.
>>>> 
>>>> Thanks to everyone who joined the dissuasion!
>>>> @Weihua @Shanmon @Shengkai @Biao @Jark
>>>> 
>>>> This weekend I’m gonna revisit and update the FLIP, adding more
>>>> details. Hopefully, we can further align our opinions.
>>>> 
>>>> Best,
>>>> Paul Lam
>>>> 
>>>>> 2023年6月2日 18:02,Paul Lam <paullin3...@gmail.com 
>>>>> <mailto:paullin3...@gmail.com>> 写道:
>>>>> 
>>>>> Hi Jark,
>>>>> 
>>>>> Thanks a lot for your input!
>>>>> 
>>>>>> If we decide to submit ExecNodeGraph instead of SQL file, is it still
>>>>>> necessary to support SQL Driver?
>>>>> 
>>>>> I think so. Apart from usage in SQL Gateway, SQL Driver could simplify
>>>>> Flink SQL execution with Flink CLI.
>>>>> 
>>>>> As the FLIP said, it’s good to have a default main class for Flink
>> SQLs,
>>>>> which allows users to submit Flink SQLs in the same way as DataStream
>>>>> jobs, or else users need to write their own main class.
>>>>> 
>>>>>> SQL Driver needs to serialize SessionState which is very challenging
>>>>>> but not detailed covered in the FLIP.
>>>>> 
>>>>> With the help of ExecNodeGraph, do we still need the serialized
>>>>> SessionState? If not, we could make SQL Driver accepts two serialized
>>>>> formats:
>>>>> 
>>>>> - SQL files for user-facing public usage
>>>>> - ExecNodeGraph for internal usage
>>>>> 
>>>>> It’s kind of similar to the relationship between job jars and
>> jobgraphs.
>>>>> 
>>>>>> Regarding "K8S doesn't support shipping multiple jars", is that true?
>>>> Is it
>>>>>> possible to support it?
>>>>> 
>>>>> Yes, K8s doesn’t distribute any files. It’s the users’ responsibility
>> to
>>>> make
>>>>> sure the resources are accessible in the containers. The common
>> solutions
>>>>> I know is to use distributed file systems or use init containers to
>>>> localize the
>>>>> resources.
>>>>> 
>>>>> Now I lean toward introducing a fs to do the distribution job. WDYT?
>>>>> 
>>>>> Best,
>>>>> Paul Lam
>>>>> 
>>>>>> 2023年6月1日 20:33,Jark Wu <imj...@gmail.com <mailto:imj...@gmail.com> 
>>>>>> <mailto:imj...@gmail.com <mailto:imj...@gmail.com>>
>> <mailto:imj...@gmail.com <mailto:imj...@gmail.com> <mailto:imj...@gmail.com 
>> <mailto:imj...@gmail.com>>>>
>>>> 写道:
>>>>>> 
>>>>>> Hi Paul,
>>>>>> 
>>>>>> Thanks for starting this discussion. I like the proposal! This is a
>>>>>> frequently requested feature!
>>>>>> 
>>>>>> I agree with Shengkai that ExecNodeGraph as the submission object is a
>>>>>> better idea than SQL file. To be more specific, it should be
>>>> JsonPlanGraph
>>>>>> or CompiledPlan which is the serializable representation. CompiledPlan
>>>> is a
>>>>>> clear separation between compiling/optimization/validation and
>>>> execution.
>>>>>> This can keep the validation and metadata accessing still on the
>>>> SQLGateway
>>>>>> side. This allows SQLGateway to leverage some metadata caching and UDF
>>>> JAR
>>>>>> caching for better compiling performance.
>>>>>> 
>>>>>> If we decide to submit ExecNodeGraph instead of SQL file, is it still
>>>>>> necessary to support SQL Driver? Regarding non-interactive SQL jobs,
>>>> users
>>>>>> can use the Table API program for application mode. SQL Driver needs
>> to
>>>>>> serialize SessionState which is very challenging but not detailed
>>>> covered
>>>>>> in the FLIP.
>>>>>> 
>>>>>> Regarding "K8S doesn't support shipping multiple jars", is that true?
>>>> Is it
>>>>>> possible to support it?
>>>>>> 
>>>>>> Best,
>>>>>> Jark
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Thu, 1 Jun 2023 at 16:58, Paul Lam <paullin3...@gmail.com 
>>>>>> <mailto:paullin3...@gmail.com> <mailto:
>> paullin3...@gmail.com <mailto:paullin3...@gmail.com>> <mailto:
>>>> paullin3...@gmail.com <mailto:paullin3...@gmail.com> 
>>>> <mailto:paullin3...@gmail.com <mailto:paullin3...@gmail.com>>>> wrote:
>>>>>> 
>>>>>>> Hi Weihua,
>>>>>>> 
>>>>>>> You’re right. Distributing the SQLs to the TMs is one of the
>>>> challenging
>>>>>>> parts of this FLIP.
>>>>>>> 
>>>>>>> Web submission is not enabled in application mode currently as you
>>>> said,
>>>>>>> but it could be changed if we have good reasons.
>>>>>>> 
>>>>>>> What do you think about introducing a distributed storage for SQL
>>>> Gateway?
>>>>>>> 
>>>>>>> We could make use of Flink file systems [1] to distribute the SQL
>>>> Gateway
>>>>>>> generated resources, that should solve the problem at its root cause.
>>>>>>> 
>>>>>>> Users could specify Flink-supported file systems to ship files. It’s
>>>> only
>>>>>>> required when using SQL Gateway with K8s application mode.
>>>>>>> 
>>>>>>> [1]
>>>>>>> 
>>>> 
>> https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/filesystems/overview/
>>  
>> <https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/filesystems/overview/>
>> <
>> https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/filesystems/overview/
>>  
>> <https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/filesystems/overview/>
>>> 
>>>> <
>>>> 
>> https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/filesystems/overview/
>>  
>> <https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/filesystems/overview/>
>> <
>> https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/filesystems/overview/
>>  
>> <https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/filesystems/overview/>
>>> 
>>>>> 
>>>>>>> 
>>>>>>> Best,
>>>>>>> Paul Lam
>>>>>>> 
>>>>>>>> 2023年6月1日 13:55,Weihua Hu <huweihua....@gmail.com 
>>>>>>>> <mailto:huweihua....@gmail.com> <mailto:
>> huweihua....@gmail.com <mailto:huweihua....@gmail.com>>> 写道:
>>>>>>>> 
>>>>>>>> Thanks Paul for your reply.
>>>>>>>> 
>>>>>>>> SQLDriver looks good to me.
>>>>>>>> 
>>>>>>>> 2. Do you mean a pass the SQL string a configuration or a program
>>>>>>> argument?
>>>>>>>> 
>>>>>>>> 
>>>>>>>> I brought this up because we were unable to pass the SQL file to
>> Flink
>>>>>>>> using Kubernetes mode.
>>>>>>>> For DataStream/Python users, they need to prepare their images for
>> the
>>>>>>> jars
>>>>>>>> and dependencies.
>>>>>>>> But for SQL users, they can use a common image to run different SQL
>>>>>>> queries
>>>>>>>> if there are no other udf requirements.
>>>>>>>> It would be great if the SQL query and image were not bound.
>>>>>>>> 
>>>>>>>> Using strings is a way to decouple these, but just as you mentioned,
>>>> it's
>>>>>>>> not easy to pass complex SQL.
>>>>>>>> 
>>>>>>>>> use web submission
>>>>>>>> AFAIK, we can not use web submission in the Application mode. Please
>>>>>>>> correct me if I'm wrong.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Best,
>>>>>>>> Weihua
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Wed, May 31, 2023 at 9:37 PM Paul Lam <paullin3...@gmail.com 
>>>>>>>> <mailto:paullin3...@gmail.com>
>> <mailto:paullin3...@gmail.com <mailto:paullin3...@gmail.com>>>
>>>> wrote:
>>>>>>>> 
>>>>>>>>> Hi Biao,
>>>>>>>>> 
>>>>>>>>> Thanks for your comments!
>>>>>>>>> 
>>>>>>>>>> 1. Scope: is this FLIP only targeted for non-interactive Flink SQL
>>>> jobs
>>>>>>>>> in
>>>>>>>>>> Application mode? More specifically, if we use SQL client/gateway
>> to
>>>>>>>>>> execute some interactive SQLs like a SELECT query, can we ask
>> flink
>>>> to
>>>>>>>>> use
>>>>>>>>>> Application mode to execute those queries after this FLIP?
>>>>>>>>> 
>>>>>>>>> Thanks for pointing it out. I think only DMLs would be executed via
>>>> SQL
>>>>>>>>> Driver.
>>>>>>>>> I'll add the scope to the FLIP.
>>>>>>>>> 
>>>>>>>>>> 2. Deployment: I believe in YARN mode, the implementation is
>>>> trivial as
>>>>>>>>> we
>>>>>>>>>> can ship files via YARN's tool easily but for K8s, things can be
>>>> more
>>>>>>>>>> complicated as Shengkai said.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Your input is very informative. I’m thinking about using web
>>>> submission,
>>>>>>>>> but it requires exposing the JobManager port which could also be a
>>>>>>> problem
>>>>>>>>> on K8s.
>>>>>>>>> 
>>>>>>>>> Another approach is to explicitly require a distributed storage to
>>>> ship
>>>>>>>>> files,
>>>>>>>>> but we may need a new deployment executor for that.
>>>>>>>>> 
>>>>>>>>> What do you think of these two approaches?
>>>>>>>>> 
>>>>>>>>>> 3. Serialization of SessionState: in SessionState, there are some
>>>>>>>>>> unserializable fields
>>>>>>>>>> like
>>>> org.apache.flink.table.resource.ResourceManager#userClassLoader.
>>>>>>> It
>>>>>>>>>> may be worthwhile to add more details about the serialization
>> part.
>>>>>>>>> 
>>>>>>>>> I agree. That’s a missing part. But if we use ExecNodeGraph as
>>>> Shengkai
>>>>>>>>> mentioned, do we eliminate the need for serialization of
>>>> SessionState?
>>>>>>>>> 
>>>>>>>>> Best,
>>>>>>>>> Paul Lam
>>>>>>>>> 
>>>>>>>>>> 2023年5月31日 13:07,Biao Geng <biaoge...@gmail.com 
>>>>>>>>>> <mailto:biaoge...@gmail.com> <mailto:
>> biaoge...@gmail.com <mailto:biaoge...@gmail.com>>> 写道:
>>>>>>>>>> 
>>>>>>>>>> Thanks Paul for the proposal!I believe it would be very useful for
>>>>>>> flink
>>>>>>>>>> users.
>>>>>>>>>> After reading the FLIP, I have some questions:
>>>>>>>>>> 1. Scope: is this FLIP only targeted for non-interactive Flink SQL
>>>> jobs
>>>>>>>>> in
>>>>>>>>>> Application mode? More specifically, if we use SQL client/gateway
>> to
>>>>>>>>>> execute some interactive SQLs like a SELECT query, can we ask
>> flink
>>>> to
>>>>>>>>> use
>>>>>>>>>> Application mode to execute those queries after this FLIP?
>>>>>>>>>> 2. Deployment: I believe in YARN mode, the implementation is
>>>> trivial as
>>>>>>>>> we
>>>>>>>>>> can ship files via YARN's tool easily but for K8s, things can be
>>>> more
>>>>>>>>>> complicated as Shengkai said. I have implemented a simple POC
>>>>>>>>>> <
>>>>>>>>> 
>>>>>>> 
>>>> 
>> https://github.com/bgeng777/flink/commit/5b4338fe52ec343326927f0fc12f015dd22b1133
>>  
>> <https://github.com/bgeng777/flink/commit/5b4338fe52ec343326927f0fc12f015dd22b1133>
>> <
>> https://github.com/bgeng777/flink/commit/5b4338fe52ec343326927f0fc12f015dd22b1133
>>  
>> <https://github.com/bgeng777/flink/commit/5b4338fe52ec343326927f0fc12f015dd22b1133>
>>> 
>>>>>>>>>> 
>>>>>>>>>> based on SQL client before(i.e. consider the SQL client which
>>>> supports
>>>>>>>>>> executing a SQL file as the SQL driver in this FLIP). One problem
>> I
>>>>>>> have
>>>>>>>>>> met is how do we ship SQL files ( or Job Graph) to the k8s side.
>>>>>>> Without
>>>>>>>>>> such support, users have to modify the initContainer or rebuild a
>>>> new
>>>>>>> K8s
>>>>>>>>>> image every time to fetch the SQL file. Like the flink k8s
>> operator,
>>>>>>> one
>>>>>>>>>> workaround is to utilize the flink config(transforming the SQL
>> file
>>>> to
>>>>>>> a
>>>>>>>>>> escaped string like Weihua mentioned) which will be converted to a
>>>>>>>>>> ConfigMap but K8s has size limit of ConfigMaps(no larger than 1MB
>>>>>>>>>> <https://kubernetes.io/docs/concepts/configuration/configmap/ 
>>>>>>>>>> <https://kubernetes.io/docs/concepts/configuration/configmap/> <
>> https://kubernetes.io/docs/concepts/configuration/configmap/ 
>> <https://kubernetes.io/docs/concepts/configuration/configmap/>>>).
>>>> Not
>>>>>>>>> sure
>>>>>>>>>> if we have better solutions.
>>>>>>>>>> 3. Serialization of SessionState: in SessionState, there are some
>>>>>>>>>> unserializable fields
>>>>>>>>>> like
>>>> org.apache.flink.table.resource.ResourceManager#userClassLoader.
>>>>>>> It
>>>>>>>>>> may be worthwhile to add more details about the serialization
>> part.
>>>>>>>>>> 
>>>>>>>>>> Best,
>>>>>>>>>> Biao Geng
>>>>>>>>>> 
>>>>>>>>>> Paul Lam <paullin3...@gmail.com <mailto:paullin3...@gmail.com> 
>>>>>>>>>> <mailto:paullin3...@gmail.com <mailto:paullin3...@gmail.com>>>
>> 于2023年5月31日周三 11:49写道:
>>>>>>>>>> 
>>>>>>>>>>> Hi Weihua,
>>>>>>>>>>> 
>>>>>>>>>>> Thanks a lot for your input! Please see my comments inline.
>>>>>>>>>>> 
>>>>>>>>>>>> - Is SQLRunner the better name? We use this to run a SQL Job.
>> (Not
>>>>>>>>>>> strong,
>>>>>>>>>>>> the SQLDriver is fine for me)
>>>>>>>>>>> 
>>>>>>>>>>> I’ve thought about SQL Runner but picked SQL Driver for the
>>>> following
>>>>>>>>>>> reasons FYI:
>>>>>>>>>>> 
>>>>>>>>>>> 1. I have a PythonDriver doing the same job for PyFlink [1]
>>>>>>>>>>> 2. Flink program's main class is sort of like Driver in JDBC
>> which
>>>>>>>>>>> translates SQLs into
>>>>>>>>>>> databases specific languages.
>>>>>>>>>>> 
>>>>>>>>>>> In general, I’m +1 for SQL Driver and +0 for SQL Runner.
>>>>>>>>>>> 
>>>>>>>>>>>> - Could we run SQL jobs using SQL in strings? Otherwise, we need
>>>> to
>>>>>>>>>>> prepare
>>>>>>>>>>>> a SQL file in an image for Kubernetes application mode, which
>> may
>>>> be
>>>>>>> a
>>>>>>>>>>> bit
>>>>>>>>>>>> cumbersome.
>>>>>>>>>>> 
>>>>>>>>>>> Do you mean a pass the SQL string a configuration or a program
>>>>>>> argument?
>>>>>>>>>>> 
>>>>>>>>>>> I thought it might be convenient for testing propose, but not
>>>>>>>>> recommended
>>>>>>>>>>> for production,
>>>>>>>>>>> cause Flink SQLs could be complicated and involves lots of
>>>> characters
>>>>>>>>> that
>>>>>>>>>>> need to escape.
>>>>>>>>>>> 
>>>>>>>>>>> WDYT?
>>>>>>>>>>> 
>>>>>>>>>>>> - I noticed that we don't specify the SQLDriver jar in the
>>>>>>>>>>> "run-application"
>>>>>>>>>>>> command. Does that mean we need to perform automatic detection
>> in
>>>>>>>>> Flink?
>>>>>>>>>>> 
>>>>>>>>>>> Yes! It’s like running a PyFlink job with the following command:
>>>>>>>>>>> 
>>>>>>>>>>> ```
>>>>>>>>>>> ./bin/flink run \
>>>>>>>>>>>  --pyModule table.word_count \
>>>>>>>>>>>  --pyFiles examples/python/table
>>>>>>>>>>> ```
>>>>>>>>>>> 
>>>>>>>>>>> The CLI determines if it’s a SQL job, if yes apply the SQL Driver
>>>>>>>>>>> automatically.
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> [1]
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>> 
>> https://github.com/apache/flink/blob/master/flink-python/src/main/java/org/apache/flink/client/python/PythonDriver.java
>>  
>> <https://github.com/apache/flink/blob/master/flink-python/src/main/java/org/apache/flink/client/python/PythonDriver.java>
>> <
>> https://github.com/apache/flink/blob/master/flink-python/src/main/java/org/apache/flink/client/python/PythonDriver.java
>>  
>> <https://github.com/apache/flink/blob/master/flink-python/src/main/java/org/apache/flink/client/python/PythonDriver.java>
>>> 
>>>>>>>>>>> 
>>>>>>>>>>> Best,
>>>>>>>>>>> Paul Lam
>>>>>>>>>>> 
>>>>>>>>>>>> 2023年5月30日 21:56,Weihua Hu <huweihua....@gmail.com 
>>>>>>>>>>>> <mailto:huweihua....@gmail.com> <mailto:
>> huweihua....@gmail.com>> 写道:
>>>>>>>>>>>> 
>>>>>>>>>>>> Thanks Paul for the proposal.
>>>>>>>>>>>> 
>>>>>>>>>>>> +1 for this. It is valuable in improving ease of use.
>>>>>>>>>>>> 
>>>>>>>>>>>> I have a few questions.
>>>>>>>>>>>> - Is SQLRunner the better name? We use this to run a SQL Job.
>> (Not
>>>>>>>>>>> strong,
>>>>>>>>>>>> the SQLDriver is fine for me)
>>>>>>>>>>>> - Could we run SQL jobs using SQL in strings? Otherwise, we need
>>>> to
>>>>>>>>>>> prepare
>>>>>>>>>>>> a SQL file in an image for Kubernetes application mode, which
>> may
>>>> be
>>>>>>> a
>>>>>>>>>>> bit
>>>>>>>>>>>> cumbersome.
>>>>>>>>>>>> - I noticed that we don't specify the SQLDriver jar in the
>>>>>>>>>>> "run-application"
>>>>>>>>>>>> command. Does that mean we need to perform automatic detection
>> in
>>>>>>>>> Flink?
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Best,
>>>>>>>>>>>> Weihua
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> On Mon, May 29, 2023 at 7:24 PM Paul Lam <paullin3...@gmail.com
>> <mailto:paullin3...@gmail.com <mailto:paullin3...@gmail.com>>>
>>>>>>>>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi team,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I’d like to start a discussion about FLIP-316 [1], which
>>>> introduces
>>>>>>> a
>>>>>>>>>>> SQL
>>>>>>>>>>>>> driver as the
>>>>>>>>>>>>> default main class for Flink SQL jobs.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Currently, Flink SQL could be executed out of the box either
>> via
>>>> SQL
>>>>>>>>>>>>> Client/Gateway
>>>>>>>>>>>>> or embedded in a Flink Java/Python program.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> However, each one has its drawback:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> - SQL Client/Gateway doesn’t support the application deployment
>>>> mode
>>>>>>>>> [2]
>>>>>>>>>>>>> - Flink Java/Python program requires extra work to write a
>>>> non-SQL
>>>>>>>>>>> program
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Therefore, I propose adding a SQL driver to act as the default
>>>> main
>>>>>>>>>>> class
>>>>>>>>>>>>> for SQL jobs.
>>>>>>>>>>>>> Please see the FLIP docs for details and feel free to comment.
>>>>>>> Thanks!
>>>>>>>>>>>>> 
>>>>>>>>>>>>> [1]
>>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>> 
>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-316%3A+Introduce+SQL+Driver
>>>>>>>>>>>>> <
>>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>> 
>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-316:+Introduce+SQL+Driver
>>>>>>>>>>>>>> 
>>>>>>>>>>>>> [2] https://issues.apache.org/jira/browse/FLINK-26541 <
>>>>>>>>>>>>> https://issues.apache.org/jira/browse/FLINK-26541>
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Best,
>>>>>>>>>>>>> Paul Lam

Reply via email to