liyue1025 opened a new issue, #8918:
URL: https://github.com/apache/seatunnel/issues/8918
SQL Server CDC -> MySQL 同步任务执行报错:
`org.apache.seatunnel.api.table.factory.FactoryException:
ErrorCode:[API-06], ErrorDescription:[Factory initialize failed] - Unable to
create a source for identifier 'SqlServer-CDC'.
at
org.apache.seatunnel.api.table.factory.FactoryUtil.createAndPrepareSource(FactoryUtil.java:101)
at
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parseSource(MultipleTableJobConfigParser.java:375)
at
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parse(MultipleTableJobConfigParser.java:209)
at
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.getLogicalDag(ClientJobExecutionEnvironment.java:114)
at
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.execute(ClientJobExecutionEnvironment.java:182)
at
org.apache.seatunnel.app.service.impl.JobExecutorServiceImpl.executeJobBySeaTunnel(JobExecutorServiceImpl.java:126)
at
org.apache.seatunnel.app.service.impl.JobExecutorServiceImpl.jobExecute(JobExecutorServiceImpl.java:79)
at
org.apache.seatunnel.app.controller.JobExecutorController.jobExecutor(JobExecutorController.java:64)
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.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
at
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
at
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
at
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
at
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
at
org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631)
at
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
at
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
at
org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
at
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
at
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
at
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:516)
at
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
at
org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at
org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.lang.Thread.run(Thread.java:750)
Caused by:
org.apache.seatunnel.api.table.catalog.exception.CatalogException:
ErrorCode:[API-03], ErrorDescription:[Catalog initialize failed] - Failed
getting table TEST.dbo.Student
at
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.AbstractJdbcCatalog.getTable(AbstractJdbcCatalog.java:203)
at
org.apache.seatunnel.api.table.catalog.Catalog.buildCatalogTablesWithErrorCheck(Catalog.java:185)
at
org.apache.seatunnel.api.table.catalog.Catalog.getTables(Catalog.java:155)
at
org.apache.seatunnel.api.table.catalog.CatalogTableUtil.lambda$getCatalogTables$0(CatalogTableUtil.java:124)
at java.util.Optional.map(Optional.java:215)
at
org.apache.seatunnel.api.table.catalog.CatalogTableUtil.getCatalogTables(CatalogTableUtil.java:118)
at
org.apache.seatunnel.api.table.catalog.CatalogTableUtil.getCatalogTables(CatalogTableUtil.java:98)
at
org.apache.seatunnel.connectors.seatunnel.cdc.sqlserver.source.SqlServerIncrementalSourceFactory.lambda$createSource$1(SqlServerIncrementalSourceFactory.java:107)
at
org.apache.seatunnel.api.table.factory.FactoryUtil.createAndPrepareSource(FactoryUtil.java:113)
at
org.apache.seatunnel.api.table.factory.FactoryUtil.createAndPrepareSource(FactoryUtil.java:74)
... 64 common frames omitted
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The "variant"
data type is not supported.
at
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:227)
at
com.microsoft.sqlserver.jdbc.TypeInfo$Builder$16.apply(dtv.java:3015)
at com.microsoft.sqlserver.jdbc.TypeInfo$Builder.build(dtv.java:3245)
at com.microsoft.sqlserver.jdbc.TypeInfo.getInstance(dtv.java:3304)
at
com.microsoft.sqlserver.jdbc.StreamColumns.setFromTDS(StreamColumns.java:183)
at
com.microsoft.sqlserver.jdbc.SQLServerResultSet$1CursorInitializer.onColMetaData(SQLServerResultSet.java:260)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:87)
at
com.microsoft.sqlserver.jdbc.SQLServerResultSet.<init>(SQLServerResultSet.java:368)
at
com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1545)
at
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:467)
at
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:409)
at
com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151)
at
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478)
at
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:219)
at
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:199)
at
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:331)
at
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.AbstractJdbcCatalog.getTable(AbstractJdbcCatalog.java:182)
... 73 common frames omitted`
以下是任务定义:
`{
"transform" : [],
"sink" : [
{
"batch_size" : "1000",
"primary_keys" : [
"StudentID"
],
"max_retries" : "0",
"create_index" : "true",
"schema_save_mode" : "CREATE_SCHEMA_WHEN_NOT_EXIST",
"source_table_name" : "Tablexxx",
"max_commit_attempts" : "3",
"auto_commit" : "true",
"plugin_name" : "Jdbc",
"url" :
"jdbc:mysql://xxx.xxx.xxx.xxx:3306/testdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true",
"is_exactly_once" : "false",
"database" : "testdb",
"password" : "******",
"transaction_timeout_sec" : "-1",
"driver" : "com.mysql.cj.jdbc.Driver",
"data_save_mode" : "APPEND_DATA",
"support_upsert_by_query_primary_key_exist" : "false",
"connection_check_timeout_sec" : "30",
"multi_table_sink_replica" : "1",
"generate_sink_sql" : true,
"user" : "root",
"table" : "seatunnel_student"
}
],
"source" : [
{
"base-url" :
"jdbc:sqlserver://xxx.xxx.xxx.xx:1444;databaseName=TEST",
"startup.mode" : "INITIAL",
"catalog" : {
"factory" : "SqlServer"
},
"parallelism" : "1",
"table-names" : [
"TEST.dbo.Student"
],
"format" : "DEFAULT",
"chunk-key.even-distribution.factor.lower-bound" : "0.05",
"result_table_name" : "Table16861680588960",
"database-names" : [
"TEST"
],
"server-time-zone" : "UTC",
"plugin_name" : "SqlServer-CDC",
"password" : "******",
"exactly_once" : "false",
"sample-sharding.threshold" : "1000",
"connection.pool.size" : "20",
"incremental.parallelism" : "1",
"snapshot.split.size" : "8096",
"stop.mode" : "NEVER",
"snapshot.fetch.size" : "1024",
"connect.max-retries" : "3",
"chunk-key.even-distribution.factor.upper-bound" : "100.0",
"connect.timeout.ms" : "30000",
"username" : "******"
}
],
"env" : {
"job.mode" : "STREAMING",
"job.name" : "TEST_SQL_SERVER_CDC",
"savemode.execute.location" : "CLUSTER"
}
}`
版本说明:
Seatunnel 2.3.8
Seatunnel-Web 1.0.2
SQL Server 2019
MySQL 5.7
seatunnel-2.3.8/lib 下部分 jar 包:
mssql-jdbc-12.8.1.jre8.jar
seatunnel-web-1.0.2/lib 下部分 jar 包:
connector-cdc-sqlserver-2.3.8.jar
datasource-jdbc-sqlserver-1.0.2.jar
datasource-sqlserver-cdc-1.0.0.jar
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]