本博客內容主要講解: Flink消費Kafka數據寫入MySQL模擬Flink端到端精準一次消費
1. 模擬 kafka數據沒1s產生一條,產生60條;
2. Flink 消費Kafka,每10一次檢查點;
3. 消費到第15條(前面產生一個檢查點,不一定是在消費到第10條,因爲第一個10s開始時間不一定是從第一條開始算)設置異常數據,數據不會插入
4. 修正異常數據,重啓應用程序,Flink重新消費Kafka,數據全部落入MySQL,沒有重複,也沒有丟失
Exactly-Once 語義
Exactly-Once語義指每個數據輸入端的事件只能影響最終結果一次.解釋機器出現故障,數據既沒有重複,也沒有丟失
CheckPoint: 一次CheckPoint進行一次快照;容包含以下內容
- 應用程序的當前狀態
- 輸入流位置
在 Flink 1.4.0 之前,Exactly-Once 語義僅限於 Flink 應用程序內部,並沒有擴展到 Flink 數據處理完後發送的大多數外部系統。Flink 應用程序與各種數據輸出端進行交互,開發人員需要有能力自己維護組件的上下文來保證 Exactly-Once 語義。
模擬 Kafka->Flink->MySQL 端到端 精準一次消費
主要代碼
- 代碼1
package com.huonan.twocommit;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ObjectNode;
import org.apache.flink.streaming.api.CheckpointingMode;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer011;
import org.apache.flink.streaming.util.serialization.JSONKeyValueDeserializationSchema;
import java.util.Properties;
/**
* 消費kafka消息,sink(自定義)到mysql中,保證kafka to mysql 的Exactly-Once
* @author ThinkPad
*/
@Slf4j
public class StreamDemoKafka2Mysql {
private static final String topic_ExactlyOnce = KafkaUtils.topic_ExactlyOnce;
public static void main(String[] args) throws Exception {
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//設置並行度,爲了方便測試,查看消息的順序,這裏設置爲1,可以更改爲多並行度
env.setParallelism(1);
//checkpoint的設置
//每隔10s進行啓動一個檢查點【設置checkpoint的週期】
env.enableCheckpointing(10000);
//設置模式爲:exactly_one,僅一次語義
env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
//確保檢查點之間有1s的時間間隔【checkpoint最小間隔】
env.getCheckpointConfig().setMinPauseBetweenCheckpoints(1000);
//檢查點必須在10s之內完成,或者被丟棄【checkpoint超時時間】
env.getCheckpointConfig().setCheckpointTimeout(10000);
//同一時間只允許進行一次檢查點
env.getCheckpointConfig().setMaxConcurrentCheckpoints(1);
//表示一旦Flink程序被cancel後,會保留checkpoint數據,以便根據實際需要恢復到指定的checkpoint
//env.getCheckpointConfig().enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
//設置statebackend,將檢查點保存在hdfs上面,默認保存在內存中。這裏先保存到本地
// env.setStateBackend(new FsStateBackend("file:///Users/temp/cp/"));
//設置kafka消費參數
Properties properties = new Properties();
properties.setProperty("bootstrap.servers", "192.168.31.100:9092");
// only required for Kafka 0.8
properties.setProperty("group.id", topic_ExactlyOnce);
// Properties props = new Properties();
//props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.31.100:9092");
// props.put(ConsumerConfig.GROUP_ID_CONFIG, "test-exactly-Once");
//kafka分區自動發現週期
// props.put(FlinkKafkaConsumerBase.KEY_PARTITION_DISCOVERY_INTERVAL_MILLIS, "3000");
/*SimpleStringSchema可以獲取到kafka消息,JSONKeyValueDeserializationSchema可以獲取都消息的key,value,metadata:topic,partition,offset等信息*/
FlinkKafkaConsumer011<ObjectNode> kafkaConsumer011 = new FlinkKafkaConsumer011<>(
topic_ExactlyOnce,
new JSONKeyValueDeserializationSchema(true),
properties);
//加入kafka數據源
DataStreamSource<ObjectNode> streamSource = env.addSource(kafkaConsumer011);
// System.out.println("streamSource:" + streamSource.print());
streamSource.print();
//數據傳輸到下游
streamSource.addSink(new MySqlTwoPhaseCommitSink()).name("MySqlTwoPhaseCommitSink");
//觸發執行
env.execute("StreamDemoKafka2Mysql");
}
}
- 代碼2
package com.huonan.twocommit;
import lombok.extern.slf4j.Slf4j;
import com.alibaba.fastjson.JSON;
import net.sf.json.JSONObject;
import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.typeutils.base.VoidSerializer;
import org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ObjectNode;
import org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 自定義kafka to mysql,繼承TwoPhaseCommitSinkFunction,實現兩階段提交
* @author ThinkPad
*/
@Slf4j
public class MySqlTwoPhaseCommitSink extends TwoPhaseCommitSinkFunction<ObjectNode,Connection,Void> {
// private static final Logger log = LoggerFactory.getLogger(MySqlTwoPhaseCommitSink.class);
public MySqlTwoPhaseCommitSink(){
super(new KryoSerializer<>(Connection.class,new ExecutionConfig()), VoidSerializer.INSTANCE);
}
/**
* 執行數據庫入庫操作 task初始化的時候調用
* @param connection
* @param objectNode
* @param context
* @throws Exception
*/
@Override
protected void invoke(Connection connection, ObjectNode objectNode, Context context) throws Exception {
log.info("start invoke...");
String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
log.info("===>date:" + date + " " + objectNode);
log.info("===>date:{} --{}",date,objectNode);
String value = objectNode.get("value").toString();
JSONObject valueJson = JSONObject.fromObject(value);
String value_str = (String) valueJson.get("value");
log.info("objectNode-value:" + value);
if (value == null||"".equals(value)) {
return;
}
String sql = "insert into `mysqlExactlyOnce_test` (`value`,`insert_time`) values (?,?)";
log.info("====執行SQL:{}===",sql);
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1,value);
Timestamp value_time = new Timestamp(System.currentTimeMillis());
ps.setTimestamp(2,value_time);
log.info("要插入的數據:{}--{}",value,value_time);
//執行insert語句
ps.execute();
//手動製造異常
// if(Integer.parseInt(value_str) == 15) {
// System.out.println(1 / 0);
// }
}
/**
* 獲取連接,開啓手動提交事物(getConnection方法中)
* @return
* @throws Exception
*/
@Override
protected Connection beginTransaction() throws Exception {
log.info("start beginTransaction.......");
String url = "jdbc:mysql://192.168.31.100:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&autoReconnect=true";
Connection connection = DBConnectUtil.getConnection(url, "root", "123456");
return connection;
}
/**
*預提交,這裏預提交的邏輯在invoke方法中
* @param connection
* @throws Exception
*/
@Override
protected void preCommit(Connection connection) throws Exception {
log.info("start preCommit...");
}
/**
* 如果invoke方法執行正常,則提交事務
* @param connection
*/
@Override
protected void commit(Connection connection) {
log.info("start commit...");
DBConnectUtil.commit(connection);
// try {
// Thread.sleep(5000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// log.error("提交失敗!!!");
// }
}
/**
* 如果invoke執行異常則回滾事物,下一次的checkpoint操作也不會執行
* @param connection
*/
@Override
protected void abort(Connection connection) {
log.info("start abort rollback...");
DBConnectUtil.rollback(connection);
}
}
控制檯日誌
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka commitId : 73be1e1168f91ee2
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase - Consumer subtask 0 will start reading the following 1 partitions from the committed group offsets in Kafka: [KafkaTopicPartition{topic='test_TwoPhaseCommit', partition=0}]
[Checkpoint Timer] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Triggering checkpoint 1 @ 1581164180635 for job 4903f3b0bee84c38dc337b92d6f3361f.
[Kafka 0.10 Fetcher for Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.kafka.clients.consumer.ConsumerConfig - ConsumerConfig values:
auto.commit.interval.ms = 5000
auto.offset.reset = latest
bootstrap.servers = [192.168.31.100:9092]
check.crcs = true
client.id =
connections.max.idle.ms = 540000
enable.auto.commit = false
exclude.internal.topics = true
fetch.max.bytes = 52428800
fetch.max.wait.ms = 500
fetch.min.bytes = 1
group.id = test_TwoPhaseCommit
heartbeat.interval.ms = 3000
interceptor.classes = null
internal.leave.group.on.close = true
isolation.level = read_uncommitted
key.deserializer = class org.apache.kafka.common.serialization.ByteArrayDeserializer
max.partition.fetch.bytes = 1048576
max.poll.interval.ms = 300000
max.poll.records = 500
metadata.max.age.ms = 300000
metric.reporters = []
metrics.num.samples = 2
metrics.recording.level = INFO
metrics.sample.window.ms = 30000
partition.assignment.strategy = [class org.apache.kafka.clients.consumer.RangeAssignor]
receive.buffer.bytes = 65536
reconnect.backoff.max.ms = 1000
reconnect.backoff.ms = 50
request.timeout.ms = 305000
retry.backoff.ms = 100
sasl.jaas.config = null
sasl.kerberos.kinit.cmd = /usr/bin/kinit
sasl.kerberos.min.time.before.relogin = 60000
sasl.kerberos.service.name = null
sasl.kerberos.ticket.renew.jitter = 0.05
sasl.kerberos.ticket.renew.window.factor = 0.8
sasl.mechanism = GSSAPI
security.protocol = PLAINTEXT
send.buffer.bytes = 131072
session.timeout.ms = 10000
ssl.cipher.suites = null
ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
ssl.endpoint.identification.algorithm = null
ssl.key.password = null
ssl.keymanager.algorithm = SunX509
ssl.keystore.location = null
ssl.keystore.password = null
ssl.keystore.type = JKS
ssl.protocol = TLS
ssl.provider = null
ssl.secure.random.implementation = null
ssl.trustmanager.algorithm = PKIX
ssl.truststore.location = null
ssl.truststore.password = null
ssl.truststore.type = JKS
value.deserializer = class org.apache.kafka.common.serialization.ByteArrayDeserializer
[Kafka 0.10 Fetcher for Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka version : 0.11.0.2
[Kafka 0.10 Fetcher for Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka commitId : 73be1e1168f91ee2
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start preCommit...
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start beginTransaction.......
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.DBConnectUtil - 獲取連接:com.mysql.jdbc.JDBC4Connection@39fe1aea 成功...
[Kafka 0.10 Fetcher for Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.kafka.clients.consumer.internals.AbstractCoordinator - Discovered coordinator hadoop000:9092 (id: 2147483647 rack: null) for group test_TwoPhaseCommit.
[flink-akka.actor.default-dispatcher-2] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Completed checkpoint 1 for job 4903f3b0bee84c38dc337b92d6f3361f (388201 bytes in 2513 ms).
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction - MySqlTwoPhaseCommitSink 0/1 - checkpoint 1 complete, committing transaction TransactionHolder{handle=com.mysql.jdbc.JDBC4Connection@2f37325d, transactionStartTime=1581164179408} from checkpoint 1
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start commit...
{"value":{"value":"1"},"metadata":{"offset":0,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:26 {"value":{"value":"1"},"metadata":{"offset":0,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:26 --{"value":{"value":"1"},"metadata":{"offset":0,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"1"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"1"}--2020-02-08 20:16:26.456
{"value":{"value":"2"},"metadata":{"offset":1,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:26 {"value":{"value":"2"},"metadata":{"offset":1,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:26 --{"value":{"value":"2"},"metadata":{"offset":1,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"2"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"2"}--2020-02-08 20:16:26.92
{"value":{"value":"3"},"metadata":{"offset":2,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:27 {"value":{"value":"3"},"metadata":{"offset":2,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:27 --{"value":{"value":"3"},"metadata":{"offset":2,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"3"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"3"}--2020-02-08 20:16:27.954
{"value":{"value":"4"},"metadata":{"offset":3,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:28 {"value":{"value":"4"},"metadata":{"offset":3,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:28 --{"value":{"value":"4"},"metadata":{"offset":3,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"4"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"4"}--2020-02-08 20:16:28.936
{"value":{"value":"5"},"metadata":{"offset":4,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:29 {"value":{"value":"5"},"metadata":{"offset":4,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:29 --{"value":{"value":"5"},"metadata":{"offset":4,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"5"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"5"}--2020-02-08 20:16:29.948
[Checkpoint Timer] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Triggering checkpoint 2 @ 1581164190527 for job 4903f3b0bee84c38dc337b92d6f3361f.
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start preCommit...
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start beginTransaction.......
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.DBConnectUtil - 獲取連接:com.mysql.jdbc.JDBC4Connection@9c53b92 成功...
{"value":{"value":"6"},"metadata":{"offset":5,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:31 {"value":{"value":"6"},"metadata":{"offset":5,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:31 --{"value":{"value":"6"},"metadata":{"offset":5,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"6"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"6"}--2020-02-08 20:16:31.771
[flink-akka.actor.default-dispatcher-13] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Completed checkpoint 2 for job 4903f3b0bee84c38dc337b92d6f3361f (438148 bytes in 1516 ms).
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction - MySqlTwoPhaseCommitSink 0/1 - checkpoint 2 complete, committing transaction TransactionHolder{handle=com.mysql.jdbc.JDBC4Connection@39fe1aea, transactionStartTime=1581164180804} from checkpoint 2
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start commit...
{"value":{"value":"7"},"metadata":{"offset":6,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:32 {"value":{"value":"7"},"metadata":{"offset":6,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:32 --{"value":{"value":"7"},"metadata":{"offset":6,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"7"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"7"}--2020-02-08 20:16:32.152
{"value":{"value":"8"},"metadata":{"offset":7,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:33 {"value":{"value":"8"},"metadata":{"offset":7,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:33 --{"value":{"value":"8"},"metadata":{"offset":7,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"8"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"8"}--2020-02-08 20:16:33.057
{"value":{"value":"9"},"metadata":{"offset":8,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:34 {"value":{"value":"9"},"metadata":{"offset":8,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:34 --{"value":{"value":"9"},"metadata":{"offset":8,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"9"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"9"}--2020-02-08 20:16:34.062
{"value":{"value":"10"},"metadata":{"offset":9,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:35 {"value":{"value":"10"},"metadata":{"offset":9,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:35 --{"value":{"value":"10"},"metadata":{"offset":9,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"10"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"10"}--2020-02-08 20:16:35.075
{"value":{"value":"11"},"metadata":{"offset":10,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:36 {"value":{"value":"11"},"metadata":{"offset":10,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:36 --{"value":{"value":"11"},"metadata":{"offset":10,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"11"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"11"}--2020-02-08 20:16:36.069
{"value":{"value":"12"},"metadata":{"offset":11,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:37 {"value":{"value":"12"},"metadata":{"offset":11,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:37 --{"value":{"value":"12"},"metadata":{"offset":11,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"12"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"12"}--2020-02-08 20:16:37.074
{"value":{"value":"13"},"metadata":{"offset":12,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:38 {"value":{"value":"13"},"metadata":{"offset":12,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:38 --{"value":{"value":"13"},"metadata":{"offset":12,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"13"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"13"}--2020-02-08 20:16:38.071
{"value":{"value":"14"},"metadata":{"offset":13,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:39 {"value":{"value":"14"},"metadata":{"offset":13,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:39 --{"value":{"value":"14"},"metadata":{"offset":13,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"14"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"14"}--2020-02-08 20:16:39.103
{"value":{"value":"15"},"metadata":{"offset":14,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:40 {"value":{"value":"15"},"metadata":{"offset":14,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:16:40 --{"value":{"value":"15"},"metadata":{"offset":14,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"15"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"15"}--2020-02-08 20:16:40.102
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start abort rollback...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.runtime.taskmanager.Task - Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1) (d8d24f87d0606d90cf2c4149e19773e2) switched from RUNNING to FAILED.
java.lang.ArithmeticException: / by zero
MySQL插入數據展示
重啓Flink
日誌
[Kafka 0.10 Fetcher for Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka version : 0.11.0.2
[Kafka 0.10 Fetcher for Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka commitId : 73be1e1168f91ee2
[Kafka 0.10 Fetcher for Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.kafka.clients.consumer.internals.AbstractCoordinator - Discovered coordinator hadoop000:9092 (id: 2147483647 rack: null) for group test_TwoPhaseCommit.
{"value":{"value":"6"},"metadata":{"offset":5,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:41 {"value":{"value":"6"},"metadata":{"offset":5,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:41 --{"value":{"value":"6"},"metadata":{"offset":5,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"6"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"6"}--2020-02-08 20:23:41.937
{"value":{"value":"7"},"metadata":{"offset":6,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"8"},"metadata":{"offset":7,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"9"},"metadata":{"offset":8,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"10"},"metadata":{"offset":9,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"11"},"metadata":{"offset":10,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"7"},"metadata":{"offset":6,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"7"},"metadata":{"offset":6,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"7"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"7"}--2020-02-08 20:23:42.053
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"8"},"metadata":{"offset":7,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"8"},"metadata":{"offset":7,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"8"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"8"}--2020-02-08 20:23:42.058
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"9"},"metadata":{"offset":8,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"9"},"metadata":{"offset":8,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"9"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"9"}--2020-02-08 20:23:42.063
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"10"},"metadata":{"offset":9,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"10"},"metadata":{"offset":9,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"10"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"10"}--2020-02-08 20:23:42.067
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"11"},"metadata":{"offset":10,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"11"},"metadata":{"offset":10,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"11"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"11"}--2020-02-08 20:23:42.073
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"12"},"metadata":{"offset":11,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"12"},"metadata":{"offset":11,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"12"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"12"}--2020-02-08 20:23:42.077
{"value":{"value":"12"},"metadata":{"offset":11,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"13"},"metadata":{"offset":12,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"14"},"metadata":{"offset":13,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"15"},"metadata":{"offset":14,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"16"},"metadata":{"offset":15,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"17"},"metadata":{"offset":16,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"13"},"metadata":{"offset":12,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"13"},"metadata":{"offset":12,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"13"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"13"}--2020-02-08 20:23:42.092
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"14"},"metadata":{"offset":13,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"14"},"metadata":{"offset":13,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"14"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"14"}--2020-02-08 20:23:42.097
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"15"},"metadata":{"offset":14,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"15"},"metadata":{"offset":14,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"15"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"15"}--2020-02-08 20:23:42.103
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"16"},"metadata":{"offset":15,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"16"},"metadata":{"offset":15,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"16"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"16"}--2020-02-08 20:23:42.107
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"17"},"metadata":{"offset":16,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"17"},"metadata":{"offset":16,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"17"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"17"}--2020-02-08 20:23:42.113
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"18"},"metadata":{"offset":17,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"18"},"metadata":{"offset":17,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"18"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"18"}--2020-02-08 20:23:42.118
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"19"},"metadata":{"offset":18,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"19"},"metadata":{"offset":18,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"19"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"19"}--2020-02-08 20:23:42.123
{"value":{"value":"18"},"metadata":{"offset":17,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"19"},"metadata":{"offset":18,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"20"},"metadata":{"offset":19,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"21"},"metadata":{"offset":20,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"20"},"metadata":{"offset":19,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"20"},"metadata":{"offset":19,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"20"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"20"}--2020-02-08 20:23:42.129
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"21"},"metadata":{"offset":20,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"21"},"metadata":{"offset":20,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"21"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"21"}--2020-02-08 20:23:42.146
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"22"},"metadata":{"offset":21,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"22"},"metadata":{"offset":21,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"22"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"22"}--2020-02-08 20:23:42.155
{"value":{"value":"22"},"metadata":{"offset":21,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"23"},"metadata":{"offset":22,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"24"},"metadata":{"offset":23,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"23"},"metadata":{"offset":22,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"23"},"metadata":{"offset":22,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"23"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"23"}--2020-02-08 20:23:42.164
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"24"},"metadata":{"offset":23,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"24"},"metadata":{"offset":23,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"24"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"24"}--2020-02-08 20:23:42.174
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"25"},"metadata":{"offset":24,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"25"},"metadata":{"offset":24,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"25"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"25"}--2020-02-08 20:23:42.184
{"value":{"value":"25"},"metadata":{"offset":24,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"26"},"metadata":{"offset":25,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"27"},"metadata":{"offset":26,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"28"},"metadata":{"offset":27,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"26"},"metadata":{"offset":25,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"26"},"metadata":{"offset":25,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"26"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"26"}--2020-02-08 20:23:42.198
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"27"},"metadata":{"offset":26,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"27"},"metadata":{"offset":26,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"27"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"27"}--2020-02-08 20:23:42.21
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"28"},"metadata":{"offset":27,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"28"},"metadata":{"offset":27,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"28"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"28"}--2020-02-08 20:23:42.217
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"29"},"metadata":{"offset":28,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"29"},"metadata":{"offset":28,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"29"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"29"}--2020-02-08 20:23:42.222
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start invoke...
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 {"value":{"value":"30"},"metadata":{"offset":29,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ===>date:2020-02-08 20:23:42 --{"value":{"value":"30"},"metadata":{"offset":29,"topic":"test_TwoPhaseCommit","partition":0}}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - objectNode-value:{"value":"30"}
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - ====執行SQL:insert into `test_TwoPhaseCommit` (`value`,`insert_time`) values (?,?)===
[Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - 要插入的數據:{"value":"30"}--2020-02-08 20:23:42.227
{"value":{"value":"29"},"metadata":{"offset":28,"topic":"test_TwoPhaseCommit","partition":0}}
{"value":{"value":"30"},"metadata":{"offset":29,"topic":"test_TwoPhaseCommit","partition":0}}
[Checkpoint Timer] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Triggering checkpoint 1 @ 1581164623870 for job 53a5dcc154f25208468215e44cd4e629.
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start preCommit...
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start beginTransaction.......
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.DBConnectUtil - 獲取連接:com.mysql.jdbc.JDBC4Connection@278447fe 成功...
[flink-akka.actor.default-dispatcher-3] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Completed checkpoint 1 for job 53a5dcc154f25208468215e44cd4e629 (461479 bytes in 2955 ms).
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction - MySqlTwoPhaseCommitSink 0/1 - checkpoint 1 complete, committing transaction TransactionHolder{handle=com.mysql.jdbc.JDBC4Connection@74a7a112, transactionStartTime=1581164619994} from checkpoint 1
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start commit...
[Checkpoint Timer] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Triggering checkpoint 2 @ 1581164633869 for job 53a5dcc154f25208468215e44cd4e629.
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start preCommit...
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start beginTransaction.......
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.DBConnectUtil - 獲取連接:com.mysql.jdbc.JDBC4Connection@95b1062 成功...
[flink-akka.actor.default-dispatcher-9] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Completed checkpoint 2 for job 53a5dcc154f25208468215e44cd4e629 (388201 bytes in 320 ms).
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction - MySqlTwoPhaseCommitSink 0/1 - checkpoint 2 complete, committing transaction TransactionHolder{handle=com.mysql.jdbc.JDBC4Connection@278447fe, transactionStartTime=1581164624085} from checkpoint 2
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start commit...
[Checkpoint Timer] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Triggering checkpoint 3 @ 1581164643868 for job 53a5dcc154f25208468215e44cd4e629.
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start preCommit...
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start beginTransaction.......
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.DBConnectUtil - 獲取連接:com.mysql.jdbc.JDBC4Connection@17174574 成功...
[flink-akka.actor.default-dispatcher-9] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Completed checkpoint 3 for job 53a5dcc154f25208468215e44cd4e629 (388201 bytes in 137 ms).
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction - MySqlTwoPhaseCommitSink 0/1 - checkpoint 3 complete, committing transaction TransactionHolder{handle=com.mysql.jdbc.JDBC4Connection@95b1062, transactionStartTime=1581164633925} from checkpoint 3
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start commit...
[Checkpoint Timer] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Triggering checkpoint 4 @ 1581164653868 for job 53a5dcc154f25208468215e44cd4e629.
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start preCommit...
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start beginTransaction.......
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.DBConnectUtil - 獲取連接:com.mysql.jdbc.JDBC4Connection@2330d50 成功...
[flink-akka.actor.default-dispatcher-12] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Completed checkpoint 4 for job 53a5dcc154f25208468215e44cd4e629 (388201 bytes in 77 ms).
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction - MySqlTwoPhaseCommitSink 0/1 - checkpoint 4 complete, committing transaction TransactionHolder{handle=com.mysql.jdbc.JDBC4Connection@17174574, transactionStartTime=1581164643900} from checkpoint 4
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start commit...
[Checkpoint Timer] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Triggering checkpoint 5 @ 1581164663875 for job 53a5dcc154f25208468215e44cd4e629.
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start preCommit...
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start beginTransaction.......
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.DBConnectUtil - 獲取連接:com.mysql.jdbc.JDBC4Connection@1c39cf1d 成功...
[flink-akka.actor.default-dispatcher-17] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Completed checkpoint 5 for job 53a5dcc154f25208468215e44cd4e629 (388201 bytes in 675 ms).
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction - MySqlTwoPhaseCommitSink 0/1 - checkpoint 5 complete, committing transaction TransactionHolder{handle=com.mysql.jdbc.JDBC4Connection@2330d50, transactionStartTime=1581164653900} from checkpoint 5
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start commit...
[Checkpoint Timer] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Triggering checkpoint 6 @ 1581164673869 for job 53a5dcc154f25208468215e44cd4e629.
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start preCommit...
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start beginTransaction.......
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.DBConnectUtil - 獲取連接:com.mysql.jdbc.JDBC4Connection@66ddf181 成功...
[flink-akka.actor.default-dispatcher-17] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Completed checkpoint 6 for job 53a5dcc154f25208468215e44cd4e629 (388201 bytes in 228 ms).
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction - MySqlTwoPhaseCommitSink 0/1 - checkpoint 6 complete, committing transaction TransactionHolder{handle=com.mysql.jdbc.JDBC4Connection@1c39cf1d, transactionStartTime=1581164664254} from checkpoint 6
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start commit...
[Checkpoint Timer] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Triggering checkpoint 7 @ 1581164683876 for job 53a5dcc154f25208468215e44cd4e629.
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start preCommit...
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start beginTransaction.......
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.DBConnectUtil - 獲取連接:com.mysql.jdbc.JDBC4Connection@13ed850d 成功...
[flink-akka.actor.default-dispatcher-9] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Completed checkpoint 7 for job 53a5dcc154f25208468215e44cd4e629 (388201 bytes in 144 ms).
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction - MySqlTwoPhaseCommitSink 0/1 - checkpoint 7 complete, committing transaction TransactionHolder{handle=com.mysql.jdbc.JDBC4Connection@66ddf181, transactionStartTime=1581164673976} from checkpoint 7
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start commit...
[Checkpoint Timer] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Triggering checkpoint 8 @ 1581164693868 for job 53a5dcc154f25208468215e44cd4e629.
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start preCommit...
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start beginTransaction.......
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.DBConnectUtil - 獲取連接:com.mysql.jdbc.JDBC4Connection@709699a1 成功...
[flink-akka.actor.default-dispatcher-17] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Completed checkpoint 8 for job 53a5dcc154f25208468215e44cd4e629 (388201 bytes in 206 ms).
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction - MySqlTwoPhaseCommitSink 0/1 - checkpoint 8 complete, committing transaction TransactionHolder{handle=com.mysql.jdbc.JDBC4Connection@13ed850d, transactionStartTime=1581164683918} from checkpoint 8
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start commit...
[Checkpoint Timer] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Triggering checkpoint 9 @ 1581164703868 for job 53a5dcc154f25208468215e44cd4e629.
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start preCommit...
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start beginTransaction.......
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.DBConnectUtil - 獲取連接:com.mysql.jdbc.JDBC4Connection@4cd6b1ac 成功...
[flink-akka.actor.default-dispatcher-24] INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator - Completed checkpoint 9 for job 53a5dcc154f25208468215e44cd4e629 (388201 bytes in 157 ms).
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction - MySqlTwoPhaseCommitSink 0/1 - checkpoint 9 complete, committing transaction TransactionHolder{handle=com.mysql.jdbc.JDBC4Connection@709699a1, transactionStartTime=1581164693907} from checkpoint 9
[Async calls on Source: Custom Source -> (Sink: Print to Std. Out, Sink: MySqlTwoPhaseCommitSink) (1/1)] INFO com.huonan.twocommit.MySqlTwoPhaseCommitSink - start commit...
MySQL數據,Kafka沒在寫數據,MySQL數據不多不少
在測試用遇到問題,啓動Flink應用程序報錯
[flink-akka.actor.default-dispatcher-45] INFO org.apache.flink.runtime.executiongraph.ExecutionGraph - Source: Custom Source -> Sink: MySqlTwoPhaseCommitSink (1/1) (22a08fab62aca0907f7554fa480f639c) switched from RUNNING to FAILED.
java.lang.Exception: Error while triggering checkpoint 32 for Source: Custom Source -> Sink: MySqlTwoPhaseCommitSink (1/1)
at org.apache.flink.runtime.taskmanager.Task$1.run(Task.java:1174)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.Exception: Could not perform checkpoint 32 for operator Source: Custom Source -> Sink: MySqlTwoPhaseCommitSink (1/1).
at org.apache.flink.streaming.runtime.tasks.StreamTask.triggerCheckpoint(StreamTask.java:570)
at org.apache.flink.streaming.runtime.tasks.SourceStreamTask.triggerCheckpoint(SourceStreamTask.java:116)
at org.apache.flink.runtime.taskmanager.Task$1.run(Task.java:1163)
... 6 more
Caused by: java.lang.Exception: Could not complete snapshot 32 for operator Source: Custom Source -> Sink: MySqlTwoPhaseCommitSink (1/1).
at org.apache.flink.streaming.api.operators.AbstractStreamOperator.snapshotState(AbstractStreamOperator.java:422)
at org.apache.flink.streaming.runtime.tasks.StreamTask$CheckpointingOperation.checkpointStreamOperator(StreamTask.java:1113)
at org.apache.flink.streaming.runtime.tasks.StreamTask$CheckpointingOperation.executeCheckpointing(StreamTask.java:1055)
at org.apache.flink.streaming.runtime.tasks.StreamTask.checkpointState(StreamTask.java:729)
at org.apache.flink.streaming.runtime.tasks.StreamTask.performCheckpoint(StreamTask.java:641)
at org.apache.flink.streaming.runtime.tasks.StreamTask.triggerCheckpoint(StreamTask.java:564)
... 8 more
Caused by: com.esotericsoftware.kryo.KryoException: java.lang.UnsupportedOperationException
Serialization trace:
indexToMysqlCharset (com.mysql.jdbc.JDBC4Connection)
各種百度問題查找,最後發現是MySQL版本的問題
把5.1.34改爲5.1.47就好了
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!-- <version>5.1.34</version>-->
<version>5.1.47</version>
</dependency>
Flink-Kafka端到端精準一次處理:詳細解讀