Giter Site home page Giter Site logo

datavane / tis Goto Github PK

View Code? Open in Web Editor NEW
970.0 43.0 217.0 28.59 MB

Support agile DataOps Based on Flink, DataX and Flink-CDC, Chunjun with Web-UI

Home Page: https://tis.pub

License: Apache License 2.0

Batchfile 0.02% Java 96.94% Shell 0.06% CSS 0.02% HTML 1.92% Scala 0.93% Smarty 0.10% Dockerfile 0.01%
java datax etl flink flink-streaming cdc dataops chunjun

tis's Introduction

Stargazers over time

Stargazers over time tis

TIS介绍

TIS快速为您提供企业级数据集成产品,基于批(DataX),流(Flink-CDC、Chunjun)一体,提供简单易用的操作界面,降低用户实施各端(MySQL、PostgreSQL、Oracle、ElasticSearch、ClickHouse、Doris等) 之间数据同步的实施门槛,缩短任务配置时间,避免配置过程中出错,使数据同步变得简单、有趣且容易上手 详细介绍

v4.0.0 发布(2024/6/2):

https://github.com/datavane/tis/releases/tag/v4.0.0

安装说明

速将TIS在分布式环境中一键安装(支持私有云、公有云等环境),方便、快捷 详细说明

架构

tis

tis

核心特性

  • 简单易用

    TIS的安装还是和传统软件安装一样,只需要三个步骤,一、下载tar包,二、解压tar包,三、启动TIS。是的,就这么简单。

  • 扩展性强

    TIS 继承了Jenkin 的设计**,使用微前端技术,重新构建了一套前端框架,前端页面可以自动渲染。

    TIS 提供了良好的扩展性和SPI机制,开发者可以很轻松地开发新的插件。

  • 基于白屏化操作

    将传统的 ETL 工具执行以黑屏化工具包的方式(json+命令行执行)升级到白屏化 2.0的产品化方式,可以大大提高工作效率。

  • 基于 DataOps 理念

    借鉴了 DataOps、DataPipeline 理念,对各各执行流程建模。不需要了解底层模块的实现原理,基本实现傻瓜化方式操作。

支持的读写组件

Reader Writer

详细

功能一瞥

批量导入流程设置

选择Reader/Writer插件类型 tis

添加MySqlReader tis

设置MySqlReader目标表、列
tis

添加ElasticWriter,可视化设置ElasticSearch的Schema Mapping tis

执行MySql->ElasticSearch DataX实例,运行状态 tis

开通Flink实时数据通道

添加Flink-Cluster、设置重启策略、CheckPoint机制等 tis

设置Source/Sink组件属性 tis

TIS基于数据库元数据信息自动生成Flink-SQL脚本,您没看错全部脚本自动生! tis

实时数据通道创建完成!构建一个实时数仓就这么简单!!!
tis

依赖项目

如何开发

https://tis.pub/docs/develop/compile-running/

许可协议

TIS is under the Apache2 License. See the LICENSE file for details.

反馈

您在使用过程中对TIS有任何不满或者批评都请不惜斧正,您提出的宝贵意见是对我们最大的支持和鼓励,我要提建议

tis's People

Contributors

baisui1981 avatar calvinkirs avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tis's Issues

mysql to starrocks 表结构变更希望同步

目前不支持表结构的变更同步,希望加上这块的功能,另外如果做不到的实时的变更,希望可以改完配置后,直接刷新一下就能变更,不需要再重新配置一遍。

Add alibaba DataX support for web UI process

类型 数据源 TIS 插件支持(读) TIS 插件支持Writer(写) 文档
RDBMS 关系型数据库 MySQL
Oracle
SQLServer
PostgreSQL
DRDS
通用RDBMS(支持所有关系型数据库)
阿里云数仓数据存储 ODPS
ADS
OSS
OCS
NoSQL数据存储 OTS
Hbase0.94
Hbase1.1
Phoenix4.x
Phoenix5.x
MongoDB
Hive
Cassandra
无结构化数据存储 TxtFile
FTP
HDFS
Elasticsearch
时间序列数据库 OpenTSDB
TSDB

使用DataX进行数据同步时,是否支持增量同步?

在文档里面没有介绍,在使用DataX的时候,是否支持增量同步,如果我的一个数据库非常大,使用tis进行同步的时候,网络断掉了,或者数据库发生错误了,中间断掉了,再次运行的时候,是全量备份还是从断掉的数据开始呢?

flink-tis-1.13.1 启动失败

根据提示按照以下命令执行

sh ./bin/start-cluster.sh

错误如下

[root@bigdata flink-tis-1.13.1]# sh ./bin/start-cluster.sh
/opt/flink-tis-1.13.1/bin/config.sh:行32: 未预期的符号 `<' 附近有语法错误
/opt/flink-tis-1.13.1/bin/config.sh:行32: `    done < <(find "$FLINK_LIB_DIR" ! -type d -name '*.jar' -print0 | sort -z)'

换成以下命令执行没问题

[root@bigdata flink-tis-1.13.1]# bin/start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host bigdata.
Starting taskexecutor daemon on host bigdata.

原因没明白

TIS自动化版本升级功能

目标

现在TIS发布了一个新的版本需要用户重新下载新的tar包,并且将之前的所有操作流程重新跑一遍。

新版本中需要添加一个自动升级TIS版本的功能,用户只需要设置好需要升级到的新版本的版本号,点击按钮后续流程就会自动执行升级到新的版本上。

不过执行过程中需要注意一个点,要保证新版本中和老版本中的兼容性,不能因为新版本升级之后导致老版本中的功能不能用。这个可以参考一下

  1. https://github.com/siom79/japicmp
  2. flink中也是通过它来实现新老版本的兼容性的 https://github.com/apache/flink/blob/56ba36db1e3edd0f1c24c53abb2b62cdfabd9bb1/pom.xml#L2048

功能说明

Oracle数据库同步建表功能建议

1在同步源表到目标表时 如同步mysql 到doris 自动生成的建表语句没有COMMENT注释;
2在同步oracle库时,配置数据源后
image
,在创建的实例中输入源只能看到 oracle用户的表空间,看不到分配了权限的其他表;

页面bug

image
新建通道生成的建表DDL文件 ,需要打开查看并编辑时,无法滚动展示全部内容,使用向下箭头挪到最下方后,”保存“按钮又无法显示
image

使用TIS的公司或个人在此打卡

谁在使用TIS

  • 诚挚地感谢每一位持续关注并使用TIS的朋友。我们会持续投入,把TIS做得更好,让数据集成的社区和生态更加繁荣。

此Issue的出发点

  1. 聆听社区的声音,让TIS更好
  2. 吸引更多的伙伴来参与贡献
  3. 更多的了解TIS的实际使用场景,以方便下一步的规划

我们期待您能提供

  1. 在此提交一条评论, 评论内容包括:
  2. 您所在公司、学校或组织和首页
  3. 您所在的城市、国家
  4. 您的联系方式: 微博、邮箱、微信 (至少一个)
  5. 您将TIS用于哪些业务场景、对TIS的建议或者期望

您可以参考下面的样例来提供您的信息:

* 组织:杭州xx有限公司 
* 地点:杭州
* 联系方式:[email protected]
* 场景:使用TIS做异构数据源批量数据同步和实时增量数据同步。

再次感谢你的参与!!! 您的支持是我们前进的强大动力!! TIS 社区

IncrStreamFactory.xml 保存有误

文件保存会生成两个子plugin
data/tis/cfg_repo/tis_plugin_config/ap/mysql_to_starrocks/com.qlangtech.tis.plugin.incr.IncrStreamFactory.xml
应该只有一个子plugin才对

<?xml version='1.0' encoding='UTF-8'?>
<com.qlangtech.tis.plugin.KeyedPluginStore plugin="[email protected]">
  <plugins>
    <com.qlangtech.plugins.incr.flink.launch.TISFlinkCDCStreamFactory plugin="[email protected]">
      <flinkCluster>mysql-flink</flinkCluster>
      <parallelism>1</parallelism>
    </com.qlangtech.plugins.incr.flink.launch.TISFlinkCDCStreamFactory>
    <com.qlangtech.plugins.incr.flink.launch.TISFlinkCDCStreamFactory plugin="[email protected]">
      <flinkCluster>mysql-flink2</flinkCluster>
      <parallelism>1</parallelism>
    </com.qlangtech.plugins.incr.flink.launch.TISFlinkCDCStreamFactory>
  </plugins>
</com.qlangtech.tis.plugin.KeyedPluginStore>

zookeeper start error

2021-12-11 11:57:00,113 [myid:] - INFO [SyncThread:0:FileTxnLog@216] - Creating new log file: log.1b
2021-12-11 11:57:00,117 [myid:] - ERROR [SyncThread:0:ZooKeeperCriticalThread@49] - Severe unrecoverable error, from thread : SyncThread:0
java.io.IOException: File too large
at java.base/sun.nio.ch.FileDispatcherImpl.pwrite0(Native Method)
at java.base/sun.nio.ch.FileDispatcherImpl.pwrite(FileDispatcherImpl.java:68)
at java.base/sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:109)
at java.base/sun.nio.ch.IOUtil.write(IOUtil.java:58)
at java.base/sun.nio.ch.FileChannelImpl.writeInternal(FileChannelImpl.java:850)
at java.base/sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:836)
at org.apache.zookeeper.server.persistence.FilePadding.padFile(FilePadding.java:78)
at org.apache.zookeeper.server.persistence.FileTxnLog.append(FileTxnLog.java:230)
at org.apache.zookeeper.server.persistence.FileTxnSnapLog.append(FileTxnSnapLog.java:377)
at org.apache.zookeeper.server.ZKDatabase.append(ZKDatabase.java:473)
at org.apache.zookeeper.server.SyncRequestProcessor.run(SyncRequestProcessor.java:140)
2021-12-11 11:57:00,120 [myid:] - INFO [SyncThread:0:ZooKeeperServerListenerImpl@42] - Thread SyncThread:0 exits, error code 1
2021-12-11 11:57:00,121 [myid:] - INFO [SyncThread:0:SyncRequestProcessor@186] - SyncRequestProcessor exited!
2021-12-11 11:57:00,123 [myid:] - INFO [main:NIOServerCnxn@1056] - Closed socket connection for client /127.0.0.1:51603 which had sessionid 0x1000100ca460000
2021-12-11 11:57:00,126 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@249] - NIOServerCnxn factory exited run method
2021-12-11 11:57:00,126 [myid:] - INFO [main:ZooKeeperServer@502] - shutting down
2021-12-11 11:57:00,127 [myid:] - INFO [main:SessionTrackerImpl@226] - Shutting down

IncompatibleClassChangeError

I installed 3.2.0 in the stand-alone version.When I created the instance and selected the data pipeline, an error occurred.

IncompatibleClassChangeError:Method 'java.lang.String com.qlangtech.tis.datax.IDataxGlobalCfg.getDefaultTemplate()' must be InterfaceMethodref constant

My jdk version is openjdk 13.

hive列分割符不支持\001

目前hive导入任务配置不支持 \001 的列分割符

解决办法是通过 在表单中 提供一个下拉列表(其中是分割符号)对应到服务端代码中的枚举结构,提供用户选择,这样就不会有错误了

必须由小写字母开头,数字、下划线、字母、减号结尾

创建sqlserver数据源的时候,显示 :“必须由小写字母开头,数字、下划线、字母、减号结尾”,但是我的数据库名是大写字母开头的,用其他的数据库链接工具可以允许大写字母开头的,能不能咱这个也支持大写字母开头呢?

mysql to starrocks 中 blob 字段问题

mysql 源表中 如果有blob 字段 会导致同步失败,希望 blob 字段 映射成starrcoks 中的varchar,但是实际内容并不需要同步过来,希望同步不要报错就行

添加数据管道报错

具体运行环境
centos 7.9
openjdk 11
在界面点击添加管道报如下错误:
IncompatibleClassChangeError: Method 'java.lang.String com.qlangtech.tis.datax.IDataxGlobalCfg.getDefaultTemplate()' must be InterfaceMethodref constant

请问是否支持指定数据库模式

我想将postgresql某个数据库中的数据导入到es,我使用了datax插件,但我的表不是在默认的public模式下,而是在test模式下,请问tis是否能支持模式设置,我尝试过在定义数据源的时候利用参数 searchpath 或者currentSchema均不成功,具体见如下连接
jdbc:postgresql://localhost:5432/mydatabase?searchpath=test
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=test
请问tis在配置数据源的时候如何制定导入那个数据库模式的下的表,谢谢

20210315修改点

  1. /offline/wf_update/employee2
    数据源结构如果加字段了,就需要在sql输入界面旁边添加一个“同步按钮”可以将数据库中最新的列同步过来
  2. 同上,当wf修改之后,需要在schema编辑页面/c/search4employee2/schema_visual/21137 将最新的列同步过来

MySQL-ClickHouse增量同步异常

version: 3.3.0

使用flink-tis-1.13.1 组件,将MySQL增量同步到ClickHouse,删除数据时跑异常,异常信息如下

org.apache.flink.runtime.JobException: Recovery is suppressed by NoRestartBackoffTimeStrategy
 at org.apache.flink.runtime.executiongraph.failover.flip1.ExecutionFailureHandler.handleFailure(ExecutionFailureHandler.java:138)
 at org.apache.flink.runtime.executiongraph.failover.flip1.ExecutionFailureHandler.getFailureHandlingResult(ExecutionFailureHandler.java:82)
 at org.apache.flink.runtime.scheduler.DefaultScheduler.handleTaskFailure(DefaultScheduler.java:207)
 at org.apache.flink.runtime.scheduler.DefaultScheduler.maybeHandleTaskFailure(DefaultScheduler.java:197)
 at org.apache.flink.runtime.scheduler.DefaultScheduler.updateTaskExecutionStateInternal(DefaultScheduler.java:188)
 at org.apache.flink.runtime.scheduler.SchedulerBase.updateTaskExecutionState(SchedulerBase.java:677)
 at org.apache.flink.runtime.scheduler.SchedulerNG.updateTaskExecutionState(SchedulerNG.java:79)
 at org.apache.flink.runtime.jobmaster.JobMaster.updateTaskExecutionState(JobMaster.java:435)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleRpcInvocation(AkkaRpcActor.java:305)
 at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleRpcMessage(AkkaRpcActor.java:212)
 at org.apache.flink.runtime.rpc.akka.FencedAkkaRpcActor.handleRpcMessage(FencedAkkaRpcActor.java:77)
 at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleMessage(AkkaRpcActor.java:158)
 at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:26)
 at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:21)
 at scala.PartialFunction$class.applyOrElse(PartialFunction.scala:123)
 at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:21)
 at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:170)
 at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171)
 at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171)
 at akka.actor.Actor$class.aroundReceive(Actor.scala:517)
 at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala:225)
 at akka.actor.ActorCell.receiveMessage(ActorCell.scala:592)
 at akka.actor.ActorCell.invoke(ActorCell.scala:561)
 at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:258)
 at akka.dispatch.Mailbox.run(Mailbox.scala:225)
 at akka.dispatch.Mailbox.exec(Mailbox.scala:235)
 at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
 at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
 at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
 at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: java.lang.NullPointerException
 at com.qlangtech.tis.plugins.incr.flink.connector.clickhouse.TISClickHouseSink.numericVal(TISClickHouseSink.java:102)
 at com.qlangtech.tis.plugins.incr.flink.connector.clickhouse.TISClickHouseSink.convertCSV(TISClickHouseSink.java:129)
 at com.qlangtech.tis.plugins.incr.flink.connector.clickhouse.TISClickHouseSink.invoke(TISClickHouseSink.java:83)
 at com.qlangtech.tis.plugins.incr.flink.connector.clickhouse.TISClickHouseSink.invoke(TISClickHouseSink.java:39)
 at org.apache.flink.streaming.api.operators.StreamSink.processElement(StreamSink.java:54)
 at org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.pushToOperator(CopyingChainingOutput.java:71)
 at org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:57)
 at org.apache.flink.streaming.runtime.tasks.BroadcastingOutputCollector.collect(BroadcastingOutputCollector.java:82)
 at org.apache.flink.streaming.api.operators.CountingOutput.collect(CountingOutput.java:56)
 at org.apache.flink.streaming.api.operators.ProcessOperator$ContextImpl.output(ProcessOperator.java:103)
 at com.qlangtech.tis.realtime.SourceProcessFunction.processElement(SourceProcessFunction.java:47)
 at com.qlangtech.tis.realtime.SourceProcessFunction.processElement(SourceProcessFunction.java:32)
 at org.apache.flink.streaming.api.operators.ProcessOperator.processElement(ProcessOperator.java:66)
 at org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.pushToOperator(CopyingChainingOutput.java:71)
 at org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:46)
 at org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:26)
 at org.apache.flink.streaming.api.operators.CountingOutput.collect(CountingOutput.java:50)
 at org.apache.flink.streaming.api.operators.CountingOutput.collect(CountingOutput.java:28)
 at org.apache.flink.streaming.api.operators.StreamSourceContexts$ManualWatermarkContext.processAndCollect(StreamSourceContexts.java:317)
 at org.apache.flink.streaming.api.operators.StreamSourceContexts$WatermarkContext.collect(StreamSourceContexts.java:411)
 at com.ververica.cdc.debezium.internal.DebeziumChangeFetcher.emitRecordsUnderCheckpointLock(DebeziumChangeFetcher.java:239)
 at com.ververica.cdc.debezium.internal.DebeziumChangeFetcher.handleBatch(DebeziumChangeFetcher.java:225)
 at com.ververica.cdc.debezium.internal.DebeziumChangeFetcher.runFetchLoop(DebeziumChangeFetcher.java:163)
 at com.ververica.cdc.debezium.DebeziumSourceFunction.run(DebeziumSourceFunction.java:439)
 at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:110)
 at org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:66)
 at org.apache.flink.streaming.runtime.tasks.SourceStreamTask$LegacySourceFunctionThread.run(SourceStreamTask.java:269)

tis单机启动失败

version: 3.3.0

按照官方文档选择单机版部署

执行启动命令后,一直在等待Solr,日志如下

[root@localhost tis-uber]# ./bin/tis.sh start
ZooKeeper JMX enabled by default
Using config: /opt/tis-uber/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
Waiting up to 180 seconds to see Solr running on port 8080 [|]  Still not seeing Solr listening on 8080 after 180 seconds!
tail: 无法打开"../logs/solr.log" 读取数据: 没有那个文件或目录

请问是需要自己预先启动Solr服务吗?

TIS系统上需要一个 集中展示异常的地方

TIS系统后台有异常是经常发生的,例如目标数据库不能正常连接为了排除错误,需要到系统后台去查看异常信息

可以利用TIS Struts的异常拦截器记录下日常信息,然后,可以集中在TIS页面上查看

数据库名校验中划线非法

version: 3.3.0

添加数据管道,在第二步Reader设置中,添加数据库配置,选择MySQL-V8MySQL-V5也有),数据库名有中划线-时校验失败(虽然命名不规范,但是遗留项目确实有这么写的)。

image

8080端口需要可以配置

目前TIS启动使用的端口是8080写死的,有的客户需要设置其他端口。

有必要改成可配置的

MySQL 增量同步Datetime类型binlog接收到的时间 比实际UTC时间快8小时

问题如题

flink-cdc中也有用户指出了类似的问题

  1. apache/flink-cdc#457
  2. apache/flink-cdc#28

问题溯源:

  1. TableSchemaBuilder创建Convertor

  2. 将字符串转成LocalDateTime

  3. 在JdbcValueConvert 中将日期转成UTC long值 JdbcValueConverters.java#L458,关键用了一个非常奇怪的方法转:

     public static long toEpochMillis(Object value, TemporalAdjuster adjuster) {
        if (value instanceof Long) {
            return (Long) value;
        }
        LocalDateTime dateTime = Conversions.toLocalDateTime(value);
        if (adjuster != null) {
            dateTime = dateTime.with(adjuster);
        }
        // 很想不通为啥这里写死用ZoneOffset.UTC ???硬是把时间拨快了8个小时
        return dateTime.toInstant(ZoneOffset.UTC).toEpochMilli();
    }

解决办法:

通过添加MySqlDateTimeConverter

并且在SourceChannel中添加如下配置,将以上类中的逻辑注入到Debezium处理binlog Datetime数据类型的逻辑中:
https://github.com/qlangtech/plugins/blob/df924d12549a6e11b614837af661ae2ee6965cbd/tis-incr/tis-realtime-flink/src/main/java/com/qlangtech/plugins/incr/flink/cdc/SourceChannel.java#L80

               debeziumProperties.put("converters", "datetime");
                debeziumProperties.put("datetime.type", "com.qlangtech.plugins.incr.flink.cdc.mysql.MySqlDateTimeConverter");
                debeziumProperties.put("datetime.format.date", "yyyy-MM-dd");
                debeziumProperties.put("datetime.format.time", "HH:mm:ss");
                debeziumProperties.put("datetime.format.datetime", "yyyy-MM-dd HH:mm:ss");
                debeziumProperties.put("datetime.format.timestamp", "yyyy-MM-dd HH:mm:ss");
                debeziumProperties.put("datetime.format.timestamp.zone", "UTC+8");

TiDB dataX 任务执行问题

存在两个问题:

  1. 解析TiDB列的metadata 有问题,例如在执行TiDB->StarRocks流程中
    映射生成的DDL脚本:
  CREATE TABLE table1
(
    `id`     VARCHAR(-1) NOT NULL,
    `id1`    VARCHAR(-1),
    `id2`    VARCHAR(-1),
    `id3`    VARCHAR(-1),
    `id4`    VARCHAR(-1),
    `id5`    VARCHAR(-1),
    `id6`    VARCHAR(-1),
    `id7`    VARCHAR(-1),
    `id8`    DATE,
    `id9`    VARCHAR(-1),
    `id10`   DECIMAL(-1,0),
    `id11`   VARCHAR(-1),
    `id12`   BIGINT,
    `id13`   BIGINT,
    `id14`   BIGINT,

varchar 的scala length 丢失了

  1. 执行过程中,如果TiDB中为null值则会 抛出异常
2021-12-27 23:13:30 INFO member com.pingcap.tikv.PDClient- Switched to new leader: [leaderInfo: 10.5.8.232:2379]
2021-12-27 23:13:30 ERROR member c.a.d.c.s.p.t.StdoutPluginCollector-
java.lang.NumberFormatException: null
        at java.lang.Long.parseLong(Long.java:552) ~[na:1.8.0_311]
        at java.lang.Long.parseLong(Long.java:631) ~[na:1.8.0_311]
        at com.qlangtech.tis.plugin.datax.TisDataXTiDBReader$Task.createCol(TisDataXTiDBReader.java:182) ~[tis-ds-tidb-plugin.jar:3.2.0]
        at com.qlangtech.tis.plugin.datax.TisDataXTiDBReader$Task.startRead(TisDataXTiDBReader.java:152) ~[tis-ds-tidb-plugin.jar:3.2.0]
        at com.alibaba.datax.core.taskgroup.runner.ReaderRunner.run(ReaderRunner.java:57) [datax-core-3.2.0.jar:na]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_311]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.