Hi Rui Fan:

Thanks for your feedback, This is indeed a problem, no matter what
placeholder rule, it may conflict with the user's input parameters,


I have come up with a better solution:


Need to interact with the front-end, when the user enters "${" an
auto-completion drop-down box will be triggered, giving the user a
list of variables list that can be selected, if a variable is
selected, then the style of "${var}" will have a special highlighting
effect, will remember the variable, the program will do the relevant
processing, and vice versa, if it is manually entered, it will always
be treated as ordinary text.



Best,
Huajie Wang



Rui Fan <[email protected]> 于2022年10月8日周六 12:52写道:

> Hi huajie,
>
> Changing from {var} to ${var} doesn't seem to solve the problem.
> e.g : --password 'mypass${123}abc'
> In other words: no matter what the placeholder rule is, it can be
> ambiguous.
>
> How about adding a config that allows users to disable
> substitution variables for the application?
>
> Best,
> fanrui
>
> On Sat, Oct 8, 2022 at 12:07 PM Huajie Wang <[email protected]> wrote:
>
> > hi 阿穆:
> > Thank you for the clarification, My question is answered, but now I have
> > one more concern,
> > I'm currently using {var} for variables, and I'm worried that one of the
> > user's parameters includes "{" and "}", e.g :
> >
> > --password 'mypass{123}abc'
> >
> > So how do we parse parse this?  How about ${var}
> >
> >
> >
> > Best,
> > Huajie Wang
> >
> >
> >
> > 阿穆 <[email protected]> 于2022年10月8日周六 11:36写道:
> >
> > > Hi, monster, Huajie Wang, Rui Fan:
> > >
> > > Thanks for your reply.
> > >
> > > I have integrated your replies. I really don't pay much attention to
> SQL,
> > > so I will do the following.
> > >
> > > 1.Each team has independent variables that do not affect each other and
> > > are isolated from each other, but the same variable is unique under the
> > > same team, so you need to specify the team when creating variables
> (users
> > > may belong to multiple teams, and the teams of the current user will be
> > > displayed here for users to choose)
> > > 2.For Flink jar jobs, there are two ways to pass variables
> > > - By using placeholders, such as adding --kafka {mykafka} to the args
> of
> > > the application, 'mykafka' is the variable code of a variable
> > > - Search by variable code or variable name. After a variable is
> selected,
> > > the parameter transfer method is displayed
> > > 3.Flink sql will use variables as placeholders, E.g:
> > >
> > > CREATE TABLE KafkaTableA (
> > > &nbsp;&nbsp; `user_id` BIGINT,
> > > &nbsp;&nbsp; `item_id` BIGINT,
> > > &nbsp;&nbsp; `type` STRING
> > > ) WITH (
> > > &nbsp;&nbsp; 'connector' = 'kafka',
> > > &nbsp;&nbsp; 'topic' = 'user_behaviorA',
> > > &nbsp;&nbsp; 'properties.bootstrap.servers' = '{kafka_clusterA}',&nbsp;
> > --
> > > 'kafka_ ClusterA' is the variable code
> > > &nbsp;&nbsp; 'properties.group.id' = 'testGroupA',
> > > &nbsp;&nbsp; 'scan.startup.mode' = 'earliest-offset',
> > > &nbsp; &nbsp;
> > > CREATE TABLE KafkaTableB (
> > > &nbsp;&nbsp; `user_id` BIGINT,
> > > &nbsp;&nbsp; `item_id` BIGINT
> > > ) WITH (
> > > &nbsp;&nbsp; 'connector' = 'kafka',
> > > &nbsp;&nbsp; 'topic' = 'user_behaviorB',
> > > &nbsp;&nbsp; 'properties.bootstrap.servers' = '{kafka_clusterB}',&nbsp;
> > --
> > > 'kafka_ ClusterB' is the variable code
> > > &nbsp;&nbsp; 'properties.group.id' = 'testGroupB',
> > > &nbsp;&nbsp; 'scan.startup.mode' = 'earliest-offset',
> > >
> > > INSERT INTO KafkaTableA SELECT user_id, item_id, '{type}' FROM
> > > KafkaTableB&nbsp;&nbsp; -- 'type' is the variable code
> > >
> > > 4.In the future, we can consider setting some system built-in variables
> > >
> > > Best,
> > > ChunJin Mu
> > >
> > > On Fri, Oct 7, 2022 at 8:27 PM Rui Fan <[email protected]&gt;
> wrote:
> > >
> > > &gt; Hi 阿穆:
> > > &gt;
> > > &gt; It's a great proposal.
> > > &gt;
> > > &gt; For usage scenarios, I strongly recommend support for replacing
> > > variables
> > > &gt; in sql. E.g:
> > > &gt;
> > > &gt; CREATE TABLE KafkaTable (
> > > &gt;&nbsp;&nbsp;&nbsp; `user_id` BIGINT,
> > > &gt;&nbsp;&nbsp;&nbsp; `item_id` BIGINT
> > > &gt; ) WITH (
> > > &gt;&nbsp;&nbsp;&nbsp; 'connector' = 'kafka',
> > > &gt;&nbsp;&nbsp;&nbsp; 'topic' = 'user_behavior',
> > > &gt;&nbsp;&nbsp;&nbsp; 'properties.bootstrap.servers' =
> > '{kafka_clusterA}',
> > > &gt;&nbsp;&nbsp;&nbsp; 'properties.group.id' = 'testGroup',
> > > &gt;&nbsp;&nbsp;&nbsp; 'scan.startup.mode' = 'earliest-offset',
> > > &gt;&nbsp;&nbsp;&nbsp; 'format' = 'csv'
> > > &gt; )
> > > &gt;
> > > &gt; Note: 'properties.bootstrap.servers' = '{kafka_clusterA}',
> > > &gt;
> > > &gt; For variable management, I have some question:
> > > &gt;
> > > &gt; 1. Is the parameter used within the team? If all teams use a
> common
> > > &gt; parameter, it
> > > &gt; needs to be defined for each team, right?
> > > &gt; 2. Which users can modify variables? Can all users modify all
> > > variables of
> > > &gt; their team?
> > > &gt; After the variable is modified incorrectly, many jobs may be
> > > affected. So I
> > > &gt; suggest that
> > > &gt; only team admin or system admin have permission to modify, add and
> > > delete
> > > &gt; variables.
> > > &gt;
> > > &gt; Best
> > > &gt; fanrui
> > >
> > >
> > > On Fri, Oct 7, 2022 at 7:01 PM Huajie Wang <[email protected]&gt;
> wrote:
> > >
> > > &gt; hi 阿穆:
> > > &gt;
> > > &gt;
> > > &gt; Thanks for starting a very useful discussion, I have a some
> > questions:
> > > &gt;
> > > &gt;
> > > &gt; 1. The access boundary problem of variable management, is this all
> > > &gt; people in the platform can access these variables( no matter who
> > > &gt; defines) or that only team members can be access these variables.
> > > &gt;
> > > &gt; 2. There are two usage scenarios for variables that I know of, one
> > is
> > > &gt; in the entry parameter of main, and the other is in flinksql. Are
> > both
> > > &gt; supported, or only supported main entry ?
> > > &gt;
> > > &gt; about first question, my opinion:
> > > &gt;
> > > &gt; 1. The variable management is associated with the team. After the
> > user
> > > &gt; logs in to the system, he must select a team (a user can belong to
> > one
> > > &gt; or more teams), The variable belongs to a team
> > > &gt;
> > > &gt; 2. All resources between teams are isolated, which means that
> > > &gt; variables are also isolated. In short, members of a team can use
> and
> > > &gt; define these variables, which are invisible to other members, and
> > > &gt; other members cannot use these variables.
> > > &gt;
> > > &gt;
> > > &gt;
> > > &gt; Welcome to your views
> > > &gt;
> > > &gt;
> > > &gt; Best,
> > > &gt; Huajie Wang
> > > &gt;
> > > &gt;
> > > &gt;
> > > &gt;
> > > &gt; 陈卓宇 <[email protected]&gt; 于2022年10月7日周五 14:18写道:
> > >
> > > &gt; &gt; Is it possible to do this variable support in sql as well
> > > &gt; &gt;
> > > &gt; &gt; 阿穆 <[email protected]&gt; 于2022年10月7日周五 13:54写道:
> > > &gt; &gt;
> > > &gt; &gt; &gt; Hi guys,
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt; I want to start a discussion about the variable
> management
> > > module. Please
> > > &gt; &gt; &gt; see this issue issue-1477.
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt; Background:
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt; In the actual production environment, Flink jobs are
> > > generally complex,
> > > &gt; &gt; &gt; and usually require multiple external components. For
> > > example, Flink jobs
> > > &gt; &gt; &gt; consume data from Kafka, then connect external
> components
> > > such as HBase
> > > &gt; &gt; or
> > > &gt; &gt; &gt; Redis to obtain additional business information, and
> then
> > > write it to the
> > > &gt; &gt; &gt; downstream external components. There are the following
> > > problems:
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt; 1. The connection information of external components,
> such
> > > as IP, port
> > > &gt; &gt; and
> > > &gt; &gt; &gt; user password, needs to be configured in the application
> > > args and
> > > &gt; &gt; &gt; transferred to the Flink job, so that the connection
> > > information of
> > > &gt; &gt; &gt; external components is distributed in multiple
> > > applications. Once the
> > > &gt; &gt; &gt; connection information of external components changes,
> > many
> > > application
> > > &gt; &gt; &gt; args parameters need to be modified, which will lead to
> > > high operation
> > > &gt; &gt; and
> > > &gt; &gt; &gt; maintenance costs.
> > > &gt; &gt; &gt; 2. There are many people in the team developing
> real-time
> > > computing jobs.
> > > &gt; &gt; &gt; There is no uniform specification for the connection
> > > information of the
> > > &gt; &gt; &gt; external components passed to the job, resulting in
> > > different parameter
> > > &gt; &gt; &gt; names of the same component. This is difficult to count
> > > which external
> > > &gt; &gt; &gt; components are dependent.
> > > &gt; &gt; &gt; 3. In production practice, there are usually multiple
> sets
> > > of
> > > &gt; &gt; &gt; environments, such as test environment and production
> > > environment. It is
> > > &gt; &gt; &gt; not intuitive to judge whether a component belongs to a
> > > test environment
> > > &gt; &gt; or
> > > &gt; &gt; &gt; a production environment simply through IP and ports.
> Even
> > > if it can be
> > > &gt; &gt; &gt; judged, there are some omissions. In this way, the
> > > connection information
> > > &gt; &gt; &gt; online to the production environment may be external
> > > components of the
> > > &gt; &gt; test
> > > &gt; &gt; &gt; environment, or components of the production environment
> > are
> > > &gt; &gt; inadvertently
> > > &gt; &gt; &gt; configured during testing, leading to production
> failures.
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt; Proposal:
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt; 1. Create a unified module to manage variables. Users
> can
> > > define their
> > > &gt; &gt; own
> > > &gt; &gt; &gt; variables in this module. Variable information includes
> > > variable code
> > > &gt; &gt; &gt; (passed to Flink program as parameter name), variable
> > > value, variable
> > > &gt; name,
> > > &gt; &gt; &gt; variable description, and which applications depend on
> > > &gt; &gt; &gt; 2. In the same Team module, the variable code or
> variable
> > > name is unique
> > > &gt; &gt; &gt; - By using placeholders, such as adding -- kafka
> {mykafka}
> > > to the args of
> > > &gt; &gt; &gt; the application, mykafka is the variable code of a
> > variable
> > > &gt; &gt; &gt; - Search by variable code or variable name. After a
> > > variable is selected,
> > > &gt; &gt; &gt; the parameter transfer method is displayed
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt; If you have any suggestions, welcome to participate in
> the
> > > discussion on
> > > &gt; &gt; &gt; the mail list or issue, I look forward to your feedback.
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt;
> > > &gt; &gt; &gt; Best wishes
> > > &gt; &gt;
> >
>

Reply via email to