Shuiqiang????????
hi????????????????????????????????????????????????????????2-from_kafka_to_kafka.py??????????????????????????????????????????????demo????????????????????????????????????demo??????????????????????????????????????????????????????????????????
????????????????????????????
??????
------------------ ???????? ------------------
??????:
"user-zh"
<[email protected]>;
????????: 2020??7??15??(??????) ????11:25
??????: "user-zh"<[email protected]>;
????: Re: pyflink1.11.0window
????sql????
select platformcodetoname(payPlatform) as platform, sum(payAmount) as
pay_amount, cast(tumble_start(rt, interval '5' seconds) as BIGINT) as
rowtime
from payment_msg group by tumble(rt, interval '5' seconds), payPlatform
????query ????5s??tumble????????????
?????????????? <[email protected]> ??2020??7??15?????? ????11:10??????
> Shuiqiang????????
> &nbsp;
&nbsp;??????????????????????????????????????????????????????????????????????????????????????window??
>
>
> ------------------&nbsp;????????&nbsp;------------------
> ??????:
>
"user-zh"
>
<
> [email protected]&gt;;
> ????????:&nbsp;2020??7??15??(??????) ????10:51
> ??????:&nbsp;"user-zh"<[email protected]&gt;;
>
> ????:&nbsp;Re: pyflink1.11.0window
>
>
>
> ??????????
> ??????????org.apache.flink.table.api.ValidationException: A tumble window
> expects a size value literal.
> ????????????tumble window????????????????????
>
> Best,
> Shuiqiang
>
> ?????????????? <[email protected]&gt; ??2020??7??15??????
????10:27??????
>
> &gt; ??????
> &gt; &amp;nbsp; &amp;nbsp;
> &gt;
>
&amp;nbsp;??????????????????????source??????????????????????????????????????????????????window??????????????????????????????
> &gt; Traceback (most recent call last):
> &gt; &amp;nbsp; File "tou.py", line 71, in <module&amp;gt;
> &gt; &amp;nbsp; &amp;nbsp; from_kafka_to_kafka_demo()
> &gt; &amp;nbsp; File "tou.py", line 21, in from_kafka_to_kafka_demo
> &gt; &amp;nbsp; &amp;nbsp; .select(" id,&amp;nbsp; time1 ,
time1 ")\
> &gt; &amp;nbsp; File
> &gt; "/usr/local/lib/python3.7/site-packages/pyflink/table/table.py",
line
> 907,
> &gt; in select
> &gt; &amp;nbsp; &amp;nbsp; return
Table(self._j_table.select(fields),
> self._t_env)
> &gt; &amp;nbsp; File
> "/usr/local/lib/python3.7/site-packages/py4j/java_gateway.py",
> &gt; line 1286, in __call__
> &gt; &amp;nbsp; &amp;nbsp; answer, self.gateway_client,
self.target_id,
> self.name)
> &gt; &amp;nbsp; File
> &gt;
"/usr/local/lib/python3.7/site-packages/pyflink/util/exceptions.py",
> line
> &gt; 147, in deco
> &gt; &amp;nbsp; &amp;nbsp; return f(*a, **kw)
> &gt; &amp;nbsp; File
> "/usr/local/lib/python3.7/site-packages/py4j/protocol.py",
> &gt; line 328, in get_return_value
> &gt; &amp;nbsp; &amp;nbsp; format(target_id, ".", name), value)
> &gt; py4j.protocol.Py4JJavaError: An error occurred while calling
> o26.select.
> &gt; : org.apache.flink.table.api.ValidationException: A tumble window
> expects
> &gt; a size value literal.
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
org.apache.flink.table.operations.utils.AggregateOperationFactory.getAsValueLiteral(AggregateOperationFactory.java:384)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
org.apache.flink.table.operations.utils.AggregateOperationFactory.validateAndCreateTumbleWindow(AggregateOperationFactory.java:302)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
org.apache.flink.table.operations.utils.AggregateOperationFactory.createResolvedWindow(AggregateOperationFactory.java:236)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
org.apache.flink.table.operations.utils.OperationTreeBuilder.windowAggregate(OperationTreeBuilder.java:250)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
org.apache.flink.table.api.internal.TableImpl$WindowGroupedTableImpl.select(TableImpl.java:794)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
org.apache.flink.table.api.internal.TableImpl$WindowGroupedTableImpl.select(TableImpl.java:781)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt; java.lang.reflect.Method.invoke(Method.java:498)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
org.apache.flink.api.python.shaded.py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
org.apache.flink.api.python.shaded.py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
> org.apache.flink.api.python.shaded.py4j.Gateway.invoke(Gateway.java:282)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
org.apache.flink.api.python.shaded.py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
org.apache.flink.api.python.shaded.py4j.commands.CallCommand.execute(CallCommand.java:79)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> &gt;
>
org.apache.flink.api.python.shaded.py4j.GatewayConnection.run(GatewayConnection.java:238)
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at
> java.lang.Thread.run(Thread.java:748)
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt; def register_rides_source(st_env):
> &gt; &amp;nbsp; &amp;nbsp; source_ddl = \
> &gt; &amp;nbsp; &amp;nbsp; """
> &gt; &amp;nbsp; &amp;nbsp; create table source1(
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;id int,
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;time1 timestamp,
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;type string,
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;WATERMARK FOR time1
as time1 -
> INTERVAL '2' SECOND
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;) with (
> &gt; &amp;nbsp; &amp;nbsp; 'connector.type' = 'kafka',
> &gt; &amp;nbsp; &amp;nbsp; 'update-mode' = 'append',
> &gt; &amp;nbsp; &amp;nbsp; 'connector.topic' = 'tp1',
> &gt; &amp;nbsp; &amp;nbsp;
'connector.properties.bootstrap.servers' =
> 'localhost:9092',
> &gt; &amp;nbsp; &amp;nbsp;
'connector.properties.zookeeper.connect' =
> 'localhost:2181',
> &gt; &amp;nbsp; &amp;nbsp; 'format.type' = 'json',
> &gt; &amp;nbsp; &amp;nbsp; 'format.derive-schema' = 'true',
> &gt; &amp;nbsp; &amp;nbsp; 'connector.version' = 'universal'
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;)
> &gt; &amp;nbsp; &amp;nbsp; """
> &gt; &amp;nbsp; &amp;nbsp; st_env.sql_update(source_ddl)
> &gt;
> &gt; &amp;nbsp; &amp;nbsp;&amp;nbsp;
> &gt; &amp;nbsp; &amp;nbsp; s_env =
> &gt; StreamExecutionEnvironment.get_execution_environment()
> &gt; &amp;nbsp; &amp;nbsp; s_env.set_parallelism(1)
> &gt;
> &gt;
> &gt; &amp;nbsp; &amp;nbsp; st_env =
StreamTableEnvironment.create(s_env)
> &gt;
> &gt;
> &gt; &amp;nbsp; &amp;nbsp; register_rides_source(st_env)
> &gt; &amp;nbsp; &amp;nbsp; register_rides_sink(st_env)
> &gt;
> &gt;
> &gt; &amp;nbsp; &amp;nbsp; st_env.from_path("source1")\
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
> &gt; .window(Tumble.over("2.secends").on("time1").alias("w")) \
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
.group_by("w") \
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
.select(" id,&amp;nbsp;
> time1 , time1 ")\
> &gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
.insert_into("sink1")
> &gt; &amp;nbsp; &amp;nbsp;&amp;nbsp;
> &gt; &amp;nbsp; &amp;nbsp;
st_env.execute("2-from_kafka_to_kafka")
> &gt;
> &gt;
> &gt; ????????
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
> &gt;
------------------&amp;nbsp;????????&amp;nbsp;------------------
> &gt; ??????:
>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> "user-zh"
>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> <
> &gt; [email protected]&amp;gt;;
> &gt; ????????:&amp;nbsp;2020??7??10??(??????) ????9:17
> &gt;
??????:&amp;nbsp;"user-zh"<[email protected]&amp;gt;;
> &gt;
> &gt; ????:&amp;nbsp;Re: pyflink1.11.0window
> &gt;
> &gt;
> &gt;
> &gt; ??????????
> &gt;
> &gt; ????source ddl????????time1?? time attribute????
> &gt; create table source1(
> &gt;
>
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
id
> int,
> &gt;
>
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
> time1 timestamp,
> &gt;
>
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
type
> string,
> &gt;
>
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
> WATERMARK FOR time1 as time1 -
> &gt; INTERVAL '2' SECOND
> &gt; ) with (...)
> &gt;
> &gt; ?????????????? <[email protected]&amp;gt; ??2020??7??10??????
????8:43??????
> &gt;
> &gt; &amp;gt;
>
------------------&amp;amp;nbsp;????????&amp;amp;nbsp;------------------
> &gt; &amp;gt; ??????:
> &gt;
>
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
> &gt; "??????????????"
> &gt;
>
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
> &gt; <
> &gt; &amp;gt; [email protected]&amp;amp;gt;;
> &gt; &amp;gt; ????????:&amp;amp;nbsp;2020??7??9??(??????)
????5:08
> &gt; &amp;gt; ??????:&amp;amp;nbsp;"godfrey
he"<[email protected]
> &amp;amp;gt;;
> &gt; &amp;gt;
> &gt; &amp;gt; ????:&amp;amp;nbsp;pyflink1.11.0window
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt; ??????
> &gt; &amp;gt; &amp;amp;nbsp;
&amp;amp;nbsp;????????pyflink1.11????????window????????????
> &gt; &amp;gt; : org.apache.flink.table.api.ValidationException: A
group
> window
> &gt; expects a
> &gt; &amp;gt; time attribute for grouping in a stream environment.
> &gt; &amp;gt;
> &gt; &amp;gt;
????????????????????????????????????????????????????????????????????????????????????????
> &gt; &amp;gt; ????????
> &gt; &amp;gt; ????
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt; def from_kafka_to_kafka_demo():
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; s_env =
> &gt; &amp;gt;
StreamExecutionEnvironment.get_execution_environment()
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
s_env.set_parallelism(1)
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; # use blink
table planner
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; st_env =
> StreamTableEnvironment.create(s_env)
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; # register
source and sink
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
register_rides_source(st_env)
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
register_rides_sink(st_env)
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
st_env.from_path("source1")\
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp;
> &gt; &amp;gt;
.window(Tumble.over("1.secends").on("time1").alias("w")) \
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp;
> .group_by("w") \
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp;
> .select(" id,&amp;amp;nbsp;
> &gt; time1 , time1 ")\
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp;
> .insert_into("sink1")
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
> st_env.execute("2-from_kafka_to_kafka")
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt; def register_rides_source(st_env):
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; source_ddl = \
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; '''
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; create table
source1(
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp;
> id int,
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp;time1 timestamp,
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp;type string
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp;) with (
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
'connector.type' = 'kafka',
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; 'update-mode'
= 'append',
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
'connector.topic' = 'tp1',
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
> 'connector.properties.bootstrap.servers' =
> &gt; 'localhost:9092'
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp;)
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; '''
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
st_env.sql_update(source_ddl)
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt; def register_rides_sink(st_env):
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; sink_ddl = \
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; '''
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; create table
sink1(
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp; &amp;amp;nbsp;
> id int,
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp;time1 timestamp,
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp;time2 timestamp
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp;) with (
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
'connector.type' = 'kafka',
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; 'update-mode'
= 'append',
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
'connector.topic' = 'tp3',
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
> 'connector.properties.bootstrap.servers' =
> &gt; 'localhost:9092'
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp;)
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; '''
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
st_env.sql_update(sink_ddl)
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt; if __name__ == '__main__':
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;
from_kafka_to_kafka_demo()
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;