本文为您介绍离线同步的相关问题。

如何处理编辑离线同步节点时报错的情况?

  • 问题描述:编辑离线同步节点时,数据源访问失败,获取表结构失败,异常消息为table XXX does not exists error with code: CDP_DATASOURCE_ERROR。但实际上,表存在且周期运维任务正常运行。
  • 解决方法:标准模式下的工作空间,包括生产环境和开发环境的数据源。请您进入数据源页面,添加开发环境的数据源,提交MaxCompute表至开发环境即可。

如何处理离线同步任务异常的情况?

  • 问题描述:00:00~23:59的定时任务依赖的上游节点是08:00~23:59的定时任务。08:00过后,同时启动了9个实例。出现异常的是9个实例的其中之一,其余的8个是正常的。
  • 解决方法:同样的任务不同的实例在运行时冲突,容易导致Duplicate entry。如果该调度频繁,建议设置自依赖,以避免此类情况。

如何处理无法连接数据源的情况?

  • 问题描述:数据集成中配置Oracle数据源,测试连通性提示连接成功。但配置数据集成任务并执行时,提示无法连接数据源,错误信息如下。
    ErrorMessage:Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的账号、密码、数据库名称、IP、Port或者向DBA寻求帮助(注意网络环境).]. 
    • 数据库连接失败。根据您配置的连接信息无法从jdbc:oracle:thin:@X.X.X.X:XXXXj中找到可以连接的JDBCUrl,请检查您的配置并进行修改。
    • java.lang.Exception:数据集成无法连接对应的数据库。可能原因如下所示:
      • 配置的ipportdatabaseJDBC错误,导致无法连接。
      • 配置的usernamepassword错误,导致鉴权失败。

      请和数据库管理员确认该数据库的连接信息是否正确。

  • 解决方法:从Oracle同步数据至MySQL,确认MySQL数据源是否连通公网。如果有,修改为JDBC的连接方式进行测试,底层会根据您配置的连接串的方式选择离线同步的机器。

    如果MySQL选择实例的方式进行配置,会被分配至不支持公网的机器上,会导致Oracle的连接出现问题。

如何处理列包含关键字导致任务失败的情况?

  • 问题描述:日志中报SQL语句执行失败(列包含关键字)。
    2017-05-31 14:15:20.282 [33881049-0-0-reader] ERROR ReaderRunner - Reader runner Received Exceptions:com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-07]
  • 错误解读:读取数据库数据失败,请检查您配置的columntablewherequerySql,或者向数据库管理员寻求帮助。
    执行的SQL如下所示。
    select **index**,plaid,plarm,fget,fot,havm,coer,ines,oumes from xxx
    错误信息如下所示。
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near **index**,plaid,plarm,fget,fot,havm,coer,ines,oumes from xxx
  • 排查思路:
    1. 本地运行SQL语句select **index**,plaid,plarm,fget,fot,havm,coer,ines,oumes from xxx,查看其结果,通常会有相应的报错。
    2. 字段中有关键字index,可以通过添加单引号或修改字段解决该问题。

如何处理表名带有双引号包单引号导致任务失败的情况?

  • 问题描述:日志中报SQL语句执行失败(表名带有双引号包单引号)。
    com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-07]
  • 错误解读:读取数据库数据失败,请检查您配置的columntablewherequerySql,或者向数据库管理员寻求帮助。
    执行的SQL如下所示。
    select /_+read_consistency(weak) query_timeout(100000000)_/ _ from** 'ql_ddddd_[0-31]’ **where 1=2
    错误信息如下所示。
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘ql_live_speaks[0-31]’ where 1=2’ at line 1 - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near **’‘ql_ddddd_[0-31]’ where 1=2’ **
  • 排查思路:配置表名时,需要双引号包单引号。例如“table”:[“‘qlddddd[0-31]’”],直接删除其中的单引号。

如何处理测试数据源连通性失败(Access denied for)的情况?

  • 问题描述:连接数据库失败。

    数据库连接串为jdbc:mysql://xx.xx.xx.x:3306/t_demo,用户名为fn_test,异常消息为Access denied for user ‘fn_test’@’%’ to database ‘t_demo’

  • 排查思路:
    • 通常出现Access denied for异常,是因为输入的信息有问题,请确认您输入的信息。
    • 确认白名单或用户的账号是否具有对应数据库的权限,RDS管控台可以添加相应的白名单和授权。

如何处理路由策略出现问题的情况?

  • 问题描述:OXS集群和ECS集群路由策略不同。
    2017-08-08 15:58:55 : Start Job[xxxxxxx], traceId **running in Pipeline[basecommon_group_xxx_cdp_oxs]**ErrorMessage:Code:[DBUtilErrorCode-10]
  • 错误解读:连接数据库失败,请检查您的账号、密码、数据库名称、IP、Port或者向数据库管理员寻求帮助(请注意网络环境)。
  • 排查思路:数据库连接失败,因为根据您配置的连接信息无法从jdbc:oracle:thin:@xxx.xxxxx.x.xx:xxxx:prod中找到可以连接的JDBCUrl,请检查您的配置并进行修改。

如何处理数据集成无法连接对应数据库的情况?

  • 问题描述:ava.lang.Exception,数据集成无法连接对应的数据库。
  • 错误解读:
    • 配置的ipportdatabaseJDBC错误,无法连接。
    • 配置的usernamepassword错误,鉴权失败。请和数据库管理员确认该数据库的连接信息是否正确。
  • 排查思路:
    情况一:
    • Oracle同步的RDS-PostgreSQL直接单击运行,不能在调度中运行,因为运行的集群不同。
    • 添加RDS的数据源时,改成添加普通JDBC形式的数据源,则Oracle同步的RDS>PostgreSQL可以在调度中运行。
    情况二:
    • VPC环境的RDS>PostgreSQL不能运行在自定义资源组上,因为VPC环境的RDS有反向代理功能,与用户自定义资源组存在网络问题。因此,通常VPC环境的RDS直接运行在DataWorks默认的资源即可。如果默认资源不能满足您的需要,要运行在自己的资源上,可以将VPC环境的RDS作为VPC环境JDBC形式的数据源,购买一个同网段的ECS。
    • 通常VPC环境的RDS映射出的URL为jdbc:mysql://100.100.70.1:4309/xxx100开头的IP是后台映射出来的,如果是一个域名的表现形式则为非VPC环境。

如何处理HBase Writer不支持DATE类型的情况?

  • 问题描述:HBase Writer不支持DATE类型。
    HBase同步到hbase:2017-08-15 11:19:29 : State: 4(FAIL) | Total: 0R 0B | Speed: 0R/s 0B/s | Error: 0R 0B | Stage: 0.0% ErrorMessage:Code:[Hbasewriter-01]
  • 错误解读:您配置的参数值不合法。

    Hbase Writer不支持DATE类型,目前支持的类型包括STRING、BOOLEAN、SHORT、INT、LONG、FLOAT和DOUBLE。

  • 排查思路:
    • HBase的Writer不支持DATE类型,所以在Writer中不能配置DATE类型。
    • 直接配置STRING类型,因为HBase没有数据类型的概念,底层通常是BYTE数组。

如何处理JSON格式配置错误的情况?

  • 错误描述:column配置错误。
    经数据集成智能分析,该任务最可能的错误原因如下。
    com.alibaba.datax.common.exception.DataXException: Code:[Framework-02]
  • 错误解读:数据集成引擎运行过程出错,任务运行结束时的错误诊断信息如下所示。
    java.lang.ClassCastException:com.alibaba.fastjson。JSONObject cannot be cast to java.lang.String
  • 排查思路:发现其JSON配置有问题。
    writer端: 
    “column”:[ 
    { 
    “name”:“busino”, 
    “type”:“string” 
    } 
    ] 
    正确的写法如下。
    “column”:[ 
    { 
    “busino” 
    } 
    ]

如何处理JSON List编写缺少[]的情况?

  • 问题描述:JSON List编写缺少[]。
    经数据集成智能分析,该任务最有可能的错误原因如下所示。
    com.alibaba.datax.common.exception.DataXException: Code:[Framework-02]
  • 错误解读:数据集成引擎运行过程出错,任务运行结束时的错误诊断信息如下所示。
    java.lang.String cannot be cast to java.util.List - java.lang.String cannot be cast to java.util.List  
    at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:41)
  • 排查思路:少了[],List类型变为其它的形式,找到对应的地方填上[]即可解决问题。

如何处理因权限问题出现任务失败的情况?

  • 缺少delete权限。
    • 问题描述:MaxCompute同步至RDS-MySQL,报错如下。
      ErrorMessage:Code:[DBUtilErrorCode-07]
    • 错误解读:读取数据库数据失败,请检查您配置的column、table、where、querySql,或者向数据库管理员寻求帮助。
      执行的SQL如下所示。
      delete from fact_xxx_d where sy_date=20170903
      具体错误信息如下所示。
      **DELETE command denied** to user ‘xxx_odps’@‘[xx.xxx.xxx.xxx](http://xx.xxx.xxx.xxx)’ for table ‘fact_xxx_d’ - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: DELETE command denied to user ‘xxx_odps’@‘[xx.xxx.xxx.xxx](http://xx.xxx.xxx.xxx)’ for table 'fact_xxx_d’
    • 排查思路:DELETE command denied to没有删除该表的权限,您需要到相应的数据库设置相关表的删除权限。
  • 缺少drop权限。
    • 问题描述:读取数据库数据失败。
      Code:[DBUtilErrorCode-07]
    • 错误解读:请检查您配置的column、table、where、querySql或者向数据库管理员寻求帮助。

      执行的SQL为truncate table be_xx_ch

      具体错误信息如下所示。
      **DROP command denied to user** ‘xxx’@‘[xxx.xx.xxx.xxx](http://xxx.xx.xxx.xxx)’ for table ‘be_xx_ch’ - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: DROP command denied to user ‘xxx’@‘[xxx.xx.xxx.xxx](http://xxx.xx.xxx.xxx)’ for table 'be_xx_ch’
    • 排查思路:MySQL Writer配置执行前准备语句truncate删除表中的数据报上面错误,是因为没有drop的权限。
  • AnalyticDB for MySQL权限问题。
    2016-11-04 19:49:11.504 [job-12485292] INFO  OriginalConfPretreatmentUtil - Available jdbcUrl:jdbc:mysql://100.98.249.103:3306/AnalyticDB for MySQL_rdb?yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true.  
    2016-11-04 19:49:11.505 [job-12485292] WARN  OriginalConfPretreatmentUtil
    您的配置文件中的列配置存在一定的风险,因为您未配置读取数据库表的列,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并进行修改。
    2016-11-04 19:49:11.528 [job-12485292] INFO Writer$Job
    如果是MaxCompute>AnalyticDB for MySQL的离线同步,您需要完成以下两方面的授权:
    • AnalyticDB for MySQL官方账号至少需要有需要同步的表的describe和select权限,因为AnalyticDB for MySQL系统需要获取MaxCompute需要同步表的结构和数据信息。
    • 您配置的AnalyticDB for MySQL数据源访问账号密钥,需要拥有向指定的AnalyticDB for MySQL数据库发起load data的权限,您可以在AnalyticDB for MySQL系统中添加授权。
    2016-11-04 19:49:11.528 [job-12485292] INFO Writer$Job
    如果是RDS(或其它非MaxCompute数据源)同步至AnalyticDB for MySQL,实现逻辑为先将数据装载至MaxCompute临时表,再从MaxCompute临时表同步至AnalyticDB for MySQL,中转MaxCompute项目为example_project,中转项目账号为someone@example.com。您需要完成以下两方面的授权:
    • AnalyticDB for MySQL官方账号需要至少具备同步的表(即MaxCompute临时表)的describe和select权限,因为AnalyticDB for MySQL系统需要获取MaxCompute需要同步的表的结构和数据信息,此部分部署时已经完成授权。
    • 中转MaxCompute对应的账号someone@example.com,需要具备向指定的AnalyticDB for MySQL数据库发起load data的权限,您可以在AnalyticDB for MySQL系统中添加授权。

    排查思路:出现此问题是因为没有设置load data权限。

    中转工作空间账号为someone@example.com,权限方面:AnalyticDB for MySQL官方账号至少需要拥有需要同步的表(即MaxCompute临时表)的describe和select权限,因为AnalyticDB for MySQL系统需要获取MaxCompute需要同步的表的结构和数据信息,此部分部署时已经完成授权,登录AnalyticDB for MySQL控制台为AnalyticDB for MySQL授予load data的权限。

如何处理因白名单出现问题导致任务失败的情况?

  • 问题描述:没有添加白名单导致测试连通性失败。
    error message: **Timed out after 5000** ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{[address:3717=dds-bp1afbf47fc7e8e41.mongodb.rds.aliyuncs.com](http://address:3717=dds-bp1afbf47fc7e8e41.mongodb.rds.aliyuncs.com), type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}, {[address:3717=dds-bp1afbf47fc7e8e42.mongodb.rds.aliyuncs.com](http://address:3717=dds-bp1afbf47fc7e8e42.mongodb.rds.aliyuncs.com), type=UNKNOWN, state=CONNECTING,** exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream**}}]
    排查思路:非VPC环境的MongoDB,添加数据源时报Timed out after 5000,白名单添加有问题。
    说明 如果您使用的是云数据库MongoDB版,MongoDB默认会有root账号。出于安全策略的考虑,数据集成仅支持使用MongoDB数据库对应账号进行连接,您添加使用MongoDB数据源时,请避免使用root作为访问账号。
  • 问题描述:白名单不全。
    for Code:[DBUtilErrorCode-10]

    错误解读:连接数据库失败,请检查您的账号、密码、数据库名称、IP、Port或者向数据库管理员寻求帮助(注意网络环境)。

    错误信息如下所示。
    java.sql.SQLException: Invalid authorization specification,  message from server: "#**28000ip not in whitelist, client ip is xx.xx.xx.xx".**  
    2017-10-17 11:03:00.673 [job-xxxx] ERROR RetryUtil - Exception when calling callable

    排查思路:未添加用户自己的资源至白名单内,导致白名单不全。

如何处理因数据源信息填写错误导致任务失败的情况?

  • 问题描述:脚本模式配置缺少相应数据源信息(could not be blank)。
    2017-09-06 12:47:05 [INFO] Success to fetch meta data for table with **projectId [43501]** **项目ID **and instanceId **[mongodb]数据源名.**  
    2017-09-06 12:47:05 [INFO] Data transport tunnel is CDP.  
    2017-09-06 12:47:05 [INFO] Begin to fetch alisa account info for 3DES encrypt with parameter account: [zz_683cdbcefba143b7b709067b362d4385].  
    2017-09-06 12:47:05 [INFO] Begin to fetch alisa account info for 3DES encrypt with parameter account: [zz_683cdbcefba143b7b709067b362d4385].  
    [Error] Exception when running task, message:** Configuration property [accessId]通常是odps数据源要填写的信息 could not be blank!**

    排查思路:报错显示没有相应的accessId信息,通常出现这种现象是脚本模式,查看用户配置的JSON代码,是否忘记写相应的数据源名。

  • 数据源配置错误或未配置数据源。
    2017-10-10 10:30:08 INFO =================================================== 
    File “/home/admin/synccenter/src/Validate.py”, line 16, in notNone 
    raise Exception(“Configuration property [%s] could not be blank!” % (context)) 
    **Exception: Configuration property [username] could not be blank!**
    排查思路:
    • 根据正常打出的日志进行对比。
      [56810] and instanceId(instanceName) [spfee_test_mysql]… 
      2017-10-09 21:09:44 [INFO] Success to fetch meta data for table with projectId [56810] and instanceId [spfee_test_mysql].
    • 由rds-mysql显示的信息可见,调数据源失败且报用户为空,说明数据源的位置配置错误或未配置数据源。
  • 问题描述:DRDS连接数据超时。
    MaxCompute同步数据到DRDS,经常出现下述错误。
    [2017-09-11 16:17:01.729 [49892464-0-0-writer] WARN CommonRdbmsWriter$Task
    回滚此次写入,采用每次写入一行方式提交,原因如下。
    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: **Communications link failure  **  
    The last packet successfully received from the server was 529 milliseconds ago.  The last packet sent successfully to the server was** 528 milliseconds ago**.
    报错

    排查思路:数据集成客户端的超时。您可以在添加DRDS数据源时加上?useUnicode=true&characterEncoding=utf-8&socketTimeout=3600000超时参数。

    示例如下。
    jdbc:mysql://10.183.80.46:3307/ae_coupon?useUnicode=true&characterEncoding=utf-8&socketTimeout=3600000
  • 问题描述:系统内部错误。

    排查思路:通常是在开发环境改错了JSON格式并直接保存,导致报错位系统内部问题。界面显示为空白,碰到该问题,直接提供您的工作空间名称和节点名称进行咨询。

如何处理因脏数据导致任务失败的情况?

  • 问题描述:脏数据(String[“”]不能转为Long)。
    2017-09-21 16:25:46.125 [51659198-0-26-writer] ERROR WriterRunner - Writer Runner Received Exceptions:  
    com.alibaba.datax.common.exception.DataXException: Code:[Common-01]

    错误解读:同步数据出现业务脏数据情况,数据类型转换错误。String[“”]不能转为Long。

    排查思路:String[“”]不能转为LONG。

    两张表格中的建表语句一致,报上述错误是因为字段类型中的空字段不能转换成LONG类型,直接配置为STRING类型。

  • 问题描述:脏数据(Out of range value)。
    2017-11-07 13:58:33.897 [503-0-0-writer] ERROR StdoutPluginCollector 
    脏数据: 
    {“exception”:“Data truncation: Out of range value for column ‘id’ at row 1”,“record”:[{“byteSize”:2,“index”:0,“rawData”:-3,“type”:“LONG”},{“byteSize”:2,“index”:1,“rawData”:-2,“type”:“LONG”},{“byteSize”:2,“index”:2,“rawData”:“其他”,“type”:“STRING”},{“byteSize”:2,“index”:3,“rawData”:“其他”,“type”:“STRING”}],“type”:“writer”}

    排查思路:mysql2mysql,源端设置的是smallint(5),目标端是int(11) unsigned,因为smallint(5)范围有负数,unsigned不允许有负数,所以产生脏数据。

  • 问题描述:脏数据(存储emoji)。

    数据表配置成了可以存储emoji的,同步时报脏数据。

    排查思路:同步emoji时报错脏数据,需要修改编码格式:
    • JDBC形式添加数据源
      jdbc:mysql://xxx.x.x.x:3306/database?characterEncoding=utf8&com.mysql.jdbc.faultInjection.serverCharsetIndex=45
    • 实例ID形式添加数据源

      在数据库名后拼接?characterEncoding=utf8&com.mysql.jdbc.faultInjection.serverCharsetIndex=45

  • 问题描述:空字段导致的脏数据。
    {“exception”:“Column ‘xxx_id’ cannot be null”,“record”:[{“byteSize”:0,“index”:0,“type”:“LONG”},{“byteSize”:8,“index”:1,“rawData”:-1,“type”:“LONG”},{“byteSize”:8,“index”:2,“rawData”:641,“type”:“LONG”}
    经数据集成智能分析,该任务最可能的错误原因如下所示。
    com.alibaba.datax.common.exception.DataXException: Code:[Framework-14]

    错误解读:数据集成传输脏数据超过用户预期,该错误通常是由于源端数据存在较多业务脏数据导致。请仔细检查DataX汇报的脏数据日志信息,或者您可以适当调大脏数据阈值。

    脏数据条数检查不通过,限制是1条,但实际上捕获了7条。

    排查思路:设置Column ‘xxx_id’ cannot be null字段不能为空,但数据中用空数据导致脏数据,修改其数据或对字段进行修改。

  • 问题描述:设置的字段大小不符合实际数据大小导致的脏数据。
    2017-01-02 17:01:19.308 [16963484-0-0-writer] ERROR StdoutPluginCollector 
    脏数据:  
    {“exception”:“Data truncation: Data too long for column ‘flash’ at row 1”,“record”:[{“byteSize”:8,“index”:0,“rawData”:1,“type”:“LONG”},{“byteSize”:8,“index”:3,“rawData”:2,“type”:“LONG”},{“byteSize”:8,“index”:4,“rawData”:1,“type”:“LONG”},{“byteSize”:8,“index”:5,“rawData”:1,“type”:“LONG”},{“byteSize”:8,“index”:6,“rawData”:1,“type”:“LONG”}

    排查思路:设置Data too long for column ‘flash’字段设置太小,但数据中数据太大导致脏数据,修改其数据或对字段进行修改。

  • 问题描述:read-only数据库权限设置问题,设置只读权限。
    2016-11-02 17:27:38.288 [12354052-0-8-writer] ERROR StdoutPluginCollector 
    脏数据:  
    {“exception”:“The MySQL server is running with the --read-only option so it cannot execute this statement”,“record”:[{“byteSize”:3,“index”:0,“rawData”:201,“type”:“LONG”},{“byteSize”:8,“index”:1,“rawData”:1474603200000,“type”:“DATE”},{“byteSize”:8,“index”:2,“rawData”:“9月23号12点”,“type”:“STRING”},{“byteSize”:5,“index”:3,“rawData”:“12:00”,“type”:“STRING”}

    排查思路:设置read-only模式,同步数据全为脏数据,修改其数据库模式,运行可以写入。

如何处理因未找到表或文件导致任务失败的情况?

  • 问题描述:没有找到相应的文件。
    经数据集成智能分析,该任务最可能的错误原因如下所示。
    com.alibaba.datax.common.exception.DataXException: Code:[HdfsReader-08]

    错误解读:您尝试读取的文件目录为空。未能找到需要读取的文件,请确认您的配置项。

    path: /user/hive/warehouse/tmp_test_map/*  
    at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26)

    排查思路:按照path找到相应的地方,检查对应的文件。如果没有找到文件,则对文件进行处理。

  • 问题描述:表不存在。
    经数据集成智能分析,该任务最可能的错误原因如下所示。
    com.alibaba.datax.common.exception.DataXException: Code:[MYSQLErrCode-04]

    错误解读:表不存在,请检查表名或者联系数据库管理员确认该表是否存在。

    表名为:xxxx,执行的SQL为select * from xxxx where 1=2;

    错误信息如下所示。

    Table ‘darkseer-test.xxxx’ doesn’t exist - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘darkseer-test.xxxx’ doesn’t exist

    排查思路:select * from xxxx where 1=2判断表xxxx是否存在问题,如果有问题则需要对表进行处理。

如何处理因分区出现问题导致任务失败的情况?

  • 问题描述:分区错误。
    参数配置为$[yyyymm]报错,日志如下所示。
    [2016-09-13 17:00:43]2016-09-13 16:21:35.689 [job-10055875] ERROR Engine
    经数据集成智能分析,该任务最可能的错误原因如下。
    com.alibaba.datax.common.exception.DataXException: Code:[OdpsWriter-13]
  • 错误解读:执行MaxCompute SQL时抛出异常,可以重试。MaxCompute目的表在运行MaxCompute SQL时抛出异常,请联系MaxCompute管理员处理。SQL内容如下所示。
    alter table db_rich_gift_record add IF NOT EXISTS
          partition(pt=’${thismonth}’);
  • 排查思路:由于加了单引号,调度参数替换无效。
  • 解决方法:删除'${thismonth}'中的引号调度参数。

如何处理因column没有配成数组形式导致任务失败的情况?

  • 问题描述:column没有配成数组形式。
    Run command failed.  
    com.alibaba.cdp.sdk.exception.CDPException: com.alibaba.fastjson.JSONException: syntax error, **expect {,** actual error, pos 0  
    at com.alibaba.cdp.sdk.exception.CDPException.asCDPException(CDPException.java:23)
  • 排查思路:JSON有问题,如下所示。
    "plugin": “mysql”,** 
    “parameter”: { 
    “datasource”: “xxxxx”, 
    ** “column”: “uid”,** 
    “where”: “”, 
    “splitPk”: “”, 
    “table”: “xxx” 
    } 
    **“column”: “uid”,-----没有配成数组形式**

如何处理因JDBC的格式填写错误导致任务失败的情况?

  • 问题描述:JDBC的格式填写错误。
  • 排查思路:JDBC格式填写错误,正确的格式为jdbc:mysql://ServerIP:Port/Database

如何处理测试连通性失败的情况?

  • 问题描述:测试连通性失败。
  • 排查思路:
    • 防火墙对IP和端口账号是否有相关的限制。
    • 安全组的端口开发情况。

如何处理日志中报错uid-xxxx-xxxx的情况?

  • 问题描述:日志中报错uid-xxxx-xxxx-xxx-xxxx
    Run command failed.  
    com.alibaba.cdp.sdk.exception.CDPException: RequestId[F9FD049B-xxxx-xxxx-xxx-xxxx] Error: CDP server encounter problems, please contact us, reason: 获取实例的网络信息发生异常,请检查RDS购买者id和RDS实例名,uid[xxxxxxxx],instance[rm-bp1cwz5886rmzio92]ServiceUnavailable : The request has failed due to a temporary failure of the server.  
    RequestId : F9FD049B-xxxx-xxxx-xxx-xxxx
  • 排查思路:通常RDS同步至MaxCompute时,如果报上述错误,您可以直接复制RequestId:F9FD049B-xxxx-xxxx-xxx-xxxx给RDS人员。

如何处理MongoDB中的query参数错误的情况?

  • 问题描述:MongoDB中的query参数错误。
    MongoDB同步至MySQL时报错如下。
    Exception in thread “taskGroup-0” com.alibaba.datax.common.exception.DataXException: Code:[Framework-13]

    经排查,产生上述报错的原因为错误配置JSON中的query参数。

  • 错误解读:数据集成插件运行过程出错,任务运行结束时的错误诊断信息如下所示。
    org.bson.json.JsonParseException: Invalid JSON input. Position: 34. Character: ‘.’.
  • 排查思路:
    • 错误示例:“query”:”{‘update_date’:{’$gte’:new Date().valueOf()/1000}}”,不支持如new Date()的参数。
    • 正确示例:“query”:”{‘operationTime’{’$gte’:ISODate(’${last_day}T00:00:00.424+0800’)}}”

如何处理Cannot allocate memory的情况?

  • 问题描述:Cannot allocate memory。
    2017-10-11 20:45:46.544 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[358] attemptCount[1] is started  
    Java HotSpot™ 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f15ceaeb000, 12288, 0) failed; error=‘**Cannot allocate memory’** (errno=12)
  • 排查思路:内存不够。如果运行在自己的资源上,需要自行添加内存。如果运行在阿里巴巴的资源上,请提交工单进行咨询。

如何处理max_allowed_packet参数错误的情况?

  • 问题描述:max_allowed_packet参数错误。
    错误信息如下所示。
    Packet for query is too large (70 > -1). You can change this value on the server by setting the max_allowed_packet’ variable. - **com.mysql.jdbc.PacketTooBigException: Packet for query is too large (70 > -1). You can change this value on the server by setting the max_allowed_packet’ variable.**
  • 排查思路:
    • max_allowed_packet参数用来控制其通信缓冲区的最大长度,MySQL根据配置文件会限制server接受的数据包大小。有时数据包过大的插入和更新会被max_allowed_packet参数限制,导致失败。
    • 通常设置max_allowed_packet参数的值为10m=10_1024_1024,建议参数值不要设置过大。

如何处理HTTP Status 500读取日志失败的情况?

  • 问题描述:HTTP Status 500读取日志失败。
    Unexpected Error:  
    Response is com.alibaba.cdp.sdk.util.http.Response@382db087[proxy=HTTP/1.1 500 Internal Server Error [Server: Tengine, Date: Fri, 27 Oct 2017 16:43:34 GMT, Content-Type: text/html;charset=utf-8, Transfer-Encoding: chunked, Connection: close,  
    **HTTP Status 500** - Read timed out**type** Exception report**message**++Read timed out++**description**++The server encountered an internal error that prevented it from fulfilling this request.++**exception**  
    java.net.SocketTimeoutException: Read timed out
  • 排查思路:调度运行报500的问题,如果是运行在默认资源上,读取日志失败,请提交工单进行咨询。如果运行在您自己的资源上,请重启Alisa即可。
    说明 如果刷新后还是停止状态,您可以重启Alisa命令:切换至admin账号执行/home/admin/alisatatasknode/target/alisatatasknode/bin/serverct1 restart

如何处理HBase Writer参数配置错误的情况?

  • 问题描述:HBase Writer参数hbase.zookeeper.quorum配置错误。
    2017-11-08 09:29:28.173 [61401062-0-0-writer] INFO  ZooKeeper - Initiating client connection, connectString=xxx-2:2181,xxx-4:2181,xxx-5:2181,xxxx-3:2181,xxx-6:2181 sessionTimeout=90000 watcher=hconnection-0x528825f50x0, quorum=node-2:2181,node-4:2181,node-5:2181,node-3:2181,node-6:2181, baseZNode=/hbase  
    Nov 08, 2017 9:29:28 AM org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper checkZk  
    WARNING: **Unable to create ZooKeeper Connection**
  • 排查思路:
    • 错误示例:“hbase.zookeeper.quorum”:“xxx-2,xxx-4,xxx-5,xxxx-3,xxx-6”
    • 正确示例:“hbase.zookeeper.quorum”:“您的zookeeperIP地址”

配置离线同步任务时,如何控制分批次读取数据?

配置离线同步任务时,您可以通过设置任务期望最大并发数同步速率来控制读取数据的并发数和速率:
  • 任务期望最大并发数:您可以设置离线同步任务的并发数,每个并发会分别从来源表中读取数据。

    由于资源或者任务本身特性等原因,实际执行时并发数可能小于等于您设置的值,会按照实际执行的并发数计费。

  • 同步速率:您可以通过限流,降低数据来源端或者数据去向端的读写压力。不限流的情况下,则会提供现有硬件环境下最大的传输性能。

短周期的调度任务,同一时间向服务器提交多个任务实例导致报错,该如何处理?

通常数据集成任务同一时间段仅接受一个同名的数据集成实例运行,以防止数据冲突。如果数据集成任务同一时间段内启动两个或以上的实例,服务器仅接受一个任务,剩余的任务会无法提交导致报错。报错

例如,数据集成任务每5分钟调度一次,其上游节点为根节点或其它虚拟节点,在00:06才完成,则00:06会同时提交数据集成00:00和00:05的两个任务实例。则只有一个任务被服务器接受,另一个会失败并报上图中的异常。

您可以设置任务自依赖,按照顺序运行实例,即00:00实例执行完成后,再执行00:05的实例。自依赖的配置方式请参见依赖上一周期