Ice

Results 3 comments of Ice

我看HiveSink.java里`setupHeartBeatTimer()`的作用也仅仅是将`timeToSendHeartBeat`设置为`true`,实际触发心跳还是得等消息来时的flush。如果长时间没有消息,事务还是会自动断开。 我的处理是`HiveSink.setupHeartBeatTimer()`里直接加上`writer.heartBeat()`,不知道这样有没有问题 @hejiang2000

> > 我看HiveSink.java里`setupHeartBeatTimer()`的作用也仅仅是将`timeToSendHeartBeat`设置为`true`,实际触发心跳还是得等消息来时的flush。如果长时间没有消息,事务还是会自动断开。 > > 我的处理是`HiveSink.setupHeartBeatTimer()`里直接加上`writer.heartBeat()`,不知道这样有没有问题 @hejiang2000 > > 最好不要这么做。setupHeartBeatTimer()是在异步定时通过TCP发送这个心跳信息(调用txnBatch.heartbeat()),所以有可能和我们在同一个TCP上发送数据的操作(txnBatch.commit() 等)发生冲突,导致问题。@NiXuebing 我发现我的问题是`drainOneBatch(Channel channel)`中循环`batchSize`处理event和write的耗时太久,目前设指定`sink.batchSize`=10000,处理时间都在300秒左右,再进行`flush`时事务已经被断开了。 `2019-03-05 14:43:20,543 INFO org.apache.flume.sink.hive.HiveSink: batch event write = 277142` `2019-03-05 14:43:20,543 INFO org.apache.flume.sink.hive.HiveWriter: Committing Txn 205240 on...

我也是,还好以前那份同步coding的