YepTen
YepTen
"splitPK":"id", 你单词拼错了,K小写啊,大哥.
从Oracle表中读不出来数据,可能你Oracle表被锁了,也可能是其他原因,检查下sql语句和Oracle数据库. All Task WaitWriterTime 77.184s | All Task WaitReaderTime 34.888s 这两个值一直没有变动,说明Reader线程一直没有数据进来,Reader线程读出来的数据会先缓存到内存中,等缓存满了,才会刷给Writer线程去写.在刷缓存的过程中会更新上面的两个值. Percentage 0.00% 一直是0,说明没有task执行成功,你看下是那几个task处于start,日志里有打印,向上翻翻就能找到.
> > 从Oracle表中读不出来数据,可能你Oracle表被锁了,也可能是其他原因,检查下sql语句和Oracle数据库. > > All Task WaitWriterTime 77.184s | All Task WaitReaderTime 34.888s 这两个值一直没有变动,说明Reader线程一直没有数据进来,Reader线程读出来的数据会先缓存到内存中,等缓存满了,才会刷给Writer线程去写.在刷缓存的过程中会更新上面的两个值. > > Percentage 0.00% 一直是0,说明没有task执行成功,你看下是那几个task处于start,日志里有打印,向上翻翻就能找到. > > 我监控过数据库,数据库是正常的,这个日志里显示一开始还是能写数据的,后面就停止了,JVM有两个指标异常,监控了GC发现内存也没问题 现在的问题就是读不到数据了,既然数据库没问题,先排查下网络问题,你再看下JVM中Reader和Writer线程的状态."JVM有两个指标异常"是哪两个? 你开始的读取速率就不快,还有你的Writer线程也很慢,再看下你写的数据库是不是有问题,如果缓存的数据一直无法消费,也是读不进来的.读写线程是一对一的生产者和消费者模式.
Total 59360 records, 74503600 bytes | Speed 485.33KB/s, 409 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 74.629s | All Task WaitReaderTime 34.235s | Percentage 0.00% Total...
有对应的日志没,DataX输出的日志。
谁是Reader,谁是Writer? DataX是支持毫秒精度的,只是不支持微秒和纳秒。 你配置的JSON也发下。
是不是clickhouse-jdbc版本太低了,你升级到最新的试试。 [Release v0.3.0](https://github.com/ClickHouse/clickhouse-jdbc/releases/tag/v0.3.0) support more data types: IPv4, IPv6, Int128, UInt128, Int256, UInt256, Decimal256, DateTime*, and Map 他到0.3.0版本才支持DateTime64;
应该就是clickhouse-jdbc版本太低的原因。 在0.3.2版本中对TimeStamp的处理如下,有对纳秒精度的处理逻辑: public static String formatTimestamp(Timestamp time, TimeZone timeZone) { SimpleDateFormat formatter = getDateTimeFormat(); formatter.setTimeZone(timeZone); StringBuilder formatted = new StringBuilder(formatter.format(time)); if (time != null && time.getNanos() % 1000000 > 0)...
看错误日志2.txt,似乎与列的时区TimeZone有关 补充:对于带时区的的TIMESTAMP,DataX没有对Types.TIMESTAMP_WITH_TIMEZONE处理/支持。 Types.TIMESTAMP = 93,一般都是使用这个。 Types.TIMESTAMP_WITH_TIMEZONE = 2014。
你原表里有null值,clickhouse-jdbc对NULL处理的有点问题。 升到最新0.3.2-patch11试试 或者将该列显式设置为Nullable 你看下这个issue https://github.com/ClickHouse/clickhouse-jdbc/issues/878