[ 
https://issues.apache.org/jira/browse/FLINK-38377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18021115#comment-18021115
 ] 

yuanfenghu commented on FLINK-38377:
------------------------------------

[~gyfora]  Do you have any opinions or suggestions on this? If I can, I can 
finish this work ~

>  SQL Job Submission in the Flink Kubernetes Operator via SQL Gateway
> --------------------------------------------------------------------
>
>                 Key: FLINK-38377
>                 URL: https://issues.apache.org/jira/browse/FLINK-38377
>             Project: Flink
>          Issue Type: New Feature
>          Components: Kubernetes Operator, Table SQL / Gateway
>            Reporter: yuanfenghu
>            Priority: Minor
>
>   1. Abstract
>   This proposal outlines a new, integrated approach for submitting Flink SQL 
> jobs on Kubernetes. We propose enhancing the Flink Kubernetes Operator to
>   natively support SQL job submission by leveraging the REST API of the Flink 
> SQL Gateway. This change will provide a standardized, API-driven, and
>   user-friendly experience, moving away from the current reliance on 
> custom-built runner JARs.
>   2. Motivation
>   Currently, submitting a pure SQL job through the Flink Kubernetes Operator 
> is not a first-class experience. The common approach, demonstrated by the
>   flink-sql-runner-example, has several significant drawbacks:
>    * Requires Custom Tooling: Users must build and maintain a specialized JAR 
> file (flink-sql-runner.jar) to package and execute their SQL scripts. This
>      adds an extra layer of complexity to the development and deployment 
> workflow.
>    * Complex Dependency Management: Managing SQL connectors, UDFs, and other 
> dependencies is cumbersome. Users often need to bundle all dependencies into a
>       "fat JAR" or manage them through complex classpath configurations, 
> which is error-prone.
>    * Non-Standard Workflow: This method feels like a workaround rather than a 
> native feature. It deviates from the declarative, API-centric philosophy of
>      Kubernetes and the operator pattern.
>    * Poor User Experience: The process is indirect and not intuitive for 
> users who simply want to run a SQL script against Flink on Kubernetes.
>   Starting with Flink 2.0, the Flink SQL Gateway has introduced the 
> capability to directly submit SQL application jobs to a Kubernetes cluster 
> [FLIP-480|https://cwiki.apache.org/confluence/display/FLINK/FLIP-480%3A+Support+to+deploy+SQL+script+in+application+mode].
>  This
>   presents a perfect opportunity to modernize and streamline the SQL 
> submission process within the operator ecosystem.
>   3. Proposed Change
>   We propose to integrate the Flink Kubernetes Operator with the Flink SQL 
> Gateway to create a seamless SQL job submission workflow. This approach
>   effectively turns the operator into an orchestrator that translates a 
> declarative Kubernetes resource into an imperative API call against the SQL
>   Gateway.
>   4. Key Advantages
>   This integration would deliver substantial benefits:
>    * Standardized, API-Driven Submission: Eliminates the need for custom 
> runner JARs, providing a clean, official, and maintainable submission process.
>    * Simplified Dependency Management: Leverages the SQL Gateway's robust 
> mechanisms for dynamically loading connectors and dependencies, which can be
>      achieved through the ADD JAR syntax.
>    * Improved User Experience: Users can define and manage Flink SQL jobs 
> using familiar kubectl and YAML files, creating a true Kubernetes-native
>      experience.
>    * Decoupling of Logic and Packaging: SQL developers can focus on writing 
> SQL without worrying about Java build systems or container image 
> customization.
>    * Alignment with Flink Project Direction: This approach aligns the 
> operator with the strategic investment being made in the Flink SQL Gateway as 
> the
>      primary entry point for SQL interactions.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to