????????????????flink-sql????mysql??ETL??????????????????????????????????????insert
 table select??????????ETL??????????????
??ETL??????????????????????????????????????????????flink??????????UpsertStreamTableSink????????????????????????????????????


????????????????????????????????
1.????sink??????????????????????sql??????????????????????????
  
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
  
??????????????????????????????????sql??????????????????????????????????????????
                  
 ????????????????????mysql??kafka??hive????????????????????????????????????


  
????????????????????????????????????????sql??????????????????????????????ETL??????




2.????????1??????????????????????????????????????????????????????????????????????????????????????????????????
  
????????????????????????????????????????????????????????????????TableSink??
  
????????????????????????????UpsertStreamTableSink??????????????????????????????????????????????flink-sql????????????????????????mysql??????sink??
  ????????????sql??????????????????????sink??????????????????????????




------------------ ???????? ------------------
??????:&nbsp;"Jark Wu"<[email protected]&gt;;
????????:&nbsp;2020??2??25??(??????) ????7:28
??????:&nbsp;"user-zh"<[email protected]&gt;;

????:&nbsp;Re: ????flink-jdbc-driver????mysql??????(flink1.10.0)



Hi,

&gt; ????????????????????????mysql????????????UpsertStreamTableSink????
??????flink-jdbc???????????? UpsertStreamTableSink ???????????????? 
StreamTableSink
?????? AppendStreamTableSink ??????????????????????


&gt; ??????????????????????????????????????????insert into t_user_target
values(1,'fan'),(2,'ss')??sink??
?????????? sink ???????????? hive sink??filesystem sink ??????

Best,
Jark


On Tue, 25 Feb 2020 at 18:20, ???? <[email protected]&gt; wrote:

&gt; ??????????????????
&gt;
&gt;
&gt; ????????????????????????mysql????????????UpsertStreamTableSink????
&gt; ????????????????????????????????????????????????????????????????
&gt;
&gt;
&gt; ??????????????????????????????????????????insert into t_user_target
&gt; values(1,'fan'),(2,'ss')??sink??
&gt; ????????????????????????sink??????????sql??????????????????????sink??
&gt;
&gt;
&gt; ------------------&amp;nbsp;????????&amp;nbsp;------------------
&gt; ??????:&amp;nbsp;"Jark Wu"<[email protected]&amp;gt;;
&gt; ????????:&amp;nbsp;2020??2??25??(??????) ????6:11
&gt; ??????:&amp;nbsp;"user-zh"<[email protected]&amp;gt;;
&gt;
&gt; ????:&amp;nbsp;Re: ????flink-jdbc-driver????mysql??????(flink1.10.0)
&gt;
&gt;
&gt;
&gt; Hi,
&gt;
&gt; ???? batch ???????????? UpsertTableSink???????????? PR ????????????
&gt; https://issues.apache.org/jira/browse/FLINK-15579
&gt;
&gt; Best,
&gt; Jark
&gt;
&gt; On Tue, 25 Feb 2020 at 11:13, ???? <[email protected]&amp;gt; wrote:
&gt;
&gt; &amp;gt;
&gt; 
??????????jdbc????gateway????????mysql??????????????????jdbc-driver????mysql??????????????????????????????SQL-gateway??????????????????????????sqlclient??????????????????????????????????????????????????????????????????????????????????????tablesink??????????????????Caused
&gt; &amp;gt; by: org.apache.flink.table.api.TableException: 
RetractStreamTableSink
&gt; and
&gt; &amp;gt; UpsertStreamTableSink is not supported in Batch
&gt; 
environment.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 at
&gt; &amp;gt;
&gt; 
org.apache.flink.table.planner.plan.nodes.physical.batch.BatchExecSink.translateToPlanInternal(BatchExecSink.scala:85)
&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at
&gt; &amp;gt;
&gt; 
org.apache.flink.table.planner.plan.nodes.physical.batch.BatchExecSink.translateToPlanInternal(BatchExecSink.scala:48)
&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at
&gt; &amp;gt;
&gt; 
org.apache.flink.table.planner.plan.nodes.exec.ExecNode$class.translateToPlan(ExecNode.scala:58)
&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at
&gt; &amp;gt;
&gt; 
org.apache.flink.table.planner.plan.nodes.physical.batch.BatchExecSink.translateToPlan(BatchExecSink.scala:48)
&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at
&gt; &amp;gt;
&gt; 
org.apache.flink.table.planner.delegation.BatchPlanner$$anonfun$translateToPlan$1.apply(BatchPlanner.scala:69)
&gt; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at
&gt; &amp;gt;
&gt; 
org.apache.flink.table.planner.delegation.BatchPlanner$$anonfun$translateToPlan$1.apply(BatchPlanner.scala:68)
&gt; &amp;gt; ????????????Connection connection =
&gt; &amp;gt;
&gt; DriverManager.getConnection("jdbc:flink://dataflow1:8083?planner=blink");
&gt; &amp;gt; Statement statement = connection.createStatement();
&gt; &amp;gt; sql = "CREATE TABLE t_user_target (\n" +
&gt; 
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 "&amp;nbsp; id BIGINT,\n"
&gt; +
&gt; 
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 "&amp;nbsp; username
&gt; VARCHAR\n" +
&gt; 
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 ") WITH (\n" +
&gt; 
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 "&amp;nbsp;
&gt; 'connector.type' = 'jdbc',\n" +
&gt; 
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 "&amp;nbsp;
&gt; 'connector.driver' = 'com.mysql.jdbc.Driver',\n" +
&gt; 
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 "&amp;nbsp;
&gt; 'connector.url' = 'jdbc:mysql://172.18.100.85:3306/targetdb',\n"
&gt; &amp;gt; +
&gt; 
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 "&amp;nbsp;
&gt; 'connector.table' = 't1target',\n" +
&gt; 
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 "&amp;nbsp;
&gt; 'connector.username' = 'root',\n" +
&gt; 
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 "&amp;nbsp;
&gt; 'connector.password' = 'root',\n" +
&gt; 
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 "&amp;nbsp;
&gt; 'connector.write.flush.max-rows' = '5000'\n" +
&gt; 
&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
 ");";
&gt; &amp;gt; statement.executeUpdate(sql);
&gt; &amp;gt; statement.execute("insert into t_user_target
&gt; values(1,'fan'),(2,'ss')");

回复