本文为您介绍数据集成的相关问题。
- 数据集成支持的数据源有哪些?
- 如何排查数据集成问题?
- 如何配置数据集成任务?
- 如何处理数据同步任务等待槽位的情况?
- 如何处理编码格式设置问题?
- 如何处理RDS同步失败转换为JDBC格式的情况?
- 如何处理表列名是关键字导致同步任务失败的情况?
- 数据同步任务如何自定义表名?
- 如何处理使用用户名root添加MongoDB数据源报错的情况?
- 为什么添加RDS数据源时已添加白名单,仍报错提示user not exist ip white list reference?
- 为什么不能在调度资源组上进行大数据计算?
- 通过JDBC连接串模式添加数据源时测试连通性失败,该如何处理?
- 通过本地自建的数据库添加数据源时测试连通性失败,该如何处理?
- 通过DataWorks同步PostgreSQL数据报错,该如何处理?
- 使用Power BI连接MaxCompute报错,该如何处理?
- 配置离线同步节点时,无法查看全部的表,该如何处理?
- VPC环境下自建的MongoDB数据源无法连接,该如何处理?
- 多线程执行DataWorks节点任务时数据乱序,该如何处理?
- 导出MaxCompute数据至AnalyticDB for MySQL失败,该如何处理?
- 使用公共资源组运行AnalyticDB for MySQL任务失败,该如何处理?
- 实时同步是否支持在界面运行?
- 在VPC环境下使用独享资源组无法连通实时同步数据源,该如何处理?
- 数据同步时连接MySQL报错,该如何处理?
数据集成支持的数据源有哪些?
数据集成支持的数据源类型请参见支持的数据源与读写插件,您可以在此查看配置数据源、抽取(Reader)和导入(Writer)各类数据源的相关文档。
如何排查数据集成问题?
- 查看运行资源
- 任务运行在默认的资源组上,日志中会出现如下信息。
running in Pipeline[basecommon_ group_xxxxxxxxx]
- 任务运行在数据集成自定义资源组上,日志中会出现如下信息。
running in Pipeline[basecommon_xxxxxxxxx]
- 任务运行在独享数据集成资源上,日志中会出现如下信息。
running in Pipeline[basecommon_S_res_group_xxx]
- 任务运行在默认的资源组上,日志中会出现如下信息。
- 查看数据源信息
当出现数据集成问题时,请参见添加数据源典型问题场景进行排查。
您需要查看的数据源信息如下:- 确认是什么数据源之间的同步。
- 确认数据源属于什么环境。
阿里云数据库、连接串模式(数据集成网络可直接连通)、连接串模式(数据集成网络不可直接连通)、VPC网络环境的数据源(RDS或其它数据源)、金融云环境(VPC环境、经典网络)。
- 确认数据源测试连通性是否成功。
请参见支持的数据源,确认数据源的相关信息是否正确。通常输入错误的情况如下:
- 多个数据源库输入错误。
- 输入的信息中加了空格或特殊字符。
- 不支持测试连通性的问题,例如非RDS的VPC环境的数据源。
- 确认配置任务的区域
登录DataWorks控制台,查看相关的区域。例如,华东2、华南1、中国(香港)、亚太东南1、欧洲中部1、亚太东南2等,通常默认是华东2。说明 购买MaxCompute后,才可以查看相应的区域。
- 界面模式报错,复制排查编码
如果报错,请复制排查码,并提交工单进行咨询。
如何配置数据集成任务?
您可以通过向导模式或脚本模式配置数据集成任务,详情请参见通过向导模式配置任务和通过脚本模式配置任务。
如何处理数据同步任务等待槽位的情况?
任务未正常运行,日志提示目前实例还没有产生日志信息,在等待槽位。
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 单击相应工作空间后的进入数据开发。
- 单击左上角的
图标,选择 。
- 在左侧导航栏,单击节点详情,查看任务使用的调度资源组。 ,右键单击没有按照预期进行调度的任务的DAG图,单击
- 返回DataWorks控制台,在左侧导航栏,单击资源组列表,进入自定义资源组页签。
单击任务使用的调度资源后的服务器管理,查看服务器的状态是否停止,或是否被其它任务占用。
su - admin
/home/admin/alisatasknode/target/alisatasknode/bin/serverctl restart
如何处理编码格式设置问题?
- 同步失败且产生脏数据
数据集成任务运行失败,且因编码问题产生脏数据,报错日志如下所示。
016-11-18 14:50:50.766 [13350975-0-0-writer] ERROR StdoutPluginCollector - 脏数据 {"exception":"Incorrect string value: '\\xF0\\x9F\\x98\\x82\\xE8\\xA2...' for column 'introduction' at row 1","record":[{"byteSize":8,"index":0,"rawData":9642,"type":"LONG"}, {"byteSize":33,"index":1,"rawData":"hello[1](http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/56134/cn_zh/149872864****/%E5%9B%BE%E7%89%877.png) cry","type":"STRING"}, {"byteSize":8,"index":4,"rawData":0,"type":"LONG"}],"type":"writer"} 2016-11-18 14:50:51.265 [13350975-0-0-writer] WARN CommonRdbmsWriter$Task - 回滚此次写入, 采用每次写入一行方式提交:java.sql.BatchUpdateException: Incorrect string value: '\xF0\x9F\x88\xB6\xEF\xB8...' for column 'introduction' at row 1
对数据库进行编码格式设置或添加数据源时,编码未设置为utf8mb4。仅utf8mb4编码支持同步表情符,导致出现上述问题。
解决方法如下:- JDBC格式添加的数据源修改utf8mb4:jdbc:mysql://xxx.x.x.x:3306/database?com.mysql.jdbc.faultInjection.serverCharsetIndex=45。
- 实例ID形式添加数据源:在数据库名后拼接,格式为
database?com.mysql.jdbc.faultInjection.serverCharsetIndex=45
。 - 修改数据源的编码格式为utf8mb4。例如,在RDS控制台修改RDS的数据库编码格式。
说明 如果需要设置RDS数据源编码格式set names utf8mb4,在添加数据源时,必须使用无公网IP和连接串方式。
- 同步成功但数据乱码
出现数据同步任务虽然成功,但数据乱码情况的原因如下:
- 源端的数据本身是乱码。
- 数据库和客户端的编码不一样。
- 浏览器编码不一样,导致预览失败或乱码。
解决方法如下:- 如果您的原始数据乱码,请首先处理好原始数据,再进行同步任务。
- 如果数据库和客户端编码格式不一致,请先修改编码格式。
- 如果浏览器编码和数据库或客户端编码格式不一致,请先统一编码格式,然后进行数据预览。
如何处理RDS同步失败转换为JDBC格式的情况?
从RDS(MySQL、SQL Server或PostgreSQL)同步数据至自建的MySQL、SQL Server或PostgreSQL时,报错为DataX无法连接对应的数据库。
- 新建一个MySQL数据源,选择数据源类型为连接串模式。
说明
- 如果自建SQL Server有公网连接:数据源配置JDBC公网地址,可以使用公共资源组同步任务。
- 如果自建SQL Server无公网连接:可以使用数据集成自定义资源组同步任务,DataWorks需要开通专业版及以上版本。
- 如果已使用高速通道打通本地IDC和专有网络,可以使用独享数据集成资源同步任务。独享数据集成资源专有网络和打通的专有网络一致。
- 使用新建的数据源配置同步任务,重新执行即可。
说明 如果是在RDS(MySQL)、RDS(SQL Server)等云产品之间同步,建议数据源类型选择为阿里云实例模式。
如何处理表列名是关键字导致同步任务失败的情况?
进行同步任务时,需要同步的表的列名是关键字,导致同步任务失败。
- 执行下述语句,新建一张表aliyun。
create table aliyun (`table` int ,msg varchar(10));
- 执行下述语句,创建视图,为table列取别名。
create view v_aliyun as select `table` as col1,msg as col2 from aliyun;
说明- table是MySQL的关键字,在数据同步时,拼接出来的代码会报错。因此需要通过创建视图,为table列起别名。
- 不建议使用关键字作为表的列名。
- 通过执行上述语句,为有关键字的列取列名。在配置同步任务时,选择v_aliyun视图代替aliyun表即可。
- MySQL的转义符为`关键字`。
- Oracle和PostgreSQl的转义符为"关键字"。
- SQlServer的转义符为[关键字]。
数据同步任务如何自定义表名?
每天产出一张表,例如orders_20170310、orders_20170311和orders_20170312,按天区分表名称,且表结构一致。
需要通过创建数据同步任务,导入表数据至MaxCompute中。可以自定义表名,实现每天凌晨自动从源数据库读取昨天的表数据。例如,今天是2017年3月15日,自动从源数据库中读取orders_20170314的表的数据导入,以此类推。
- 登录DataWorks控制台,单击相应工作空间后的进入数据开发。
- 通过向导模式创建数据同步任务,选择数据来源,例如orders_20170310。详情请参见创建同步任务。
- 单击转换脚本图标,将向导模式转换为脚本模式。
- 在脚本模式中,修改来源表的表名为变量,例如orders_${tablename}。
由于按天区分表名称,且需要每天读取前一天的数据,所以在任务的参数配置中,为变量赋值为$[yyyymmdd-1]。
说明 您也可以修改来源表的表名为变量orders_${bdp.system.bizdate},则无需赋值。 - 配置完成后,依次单击
和
,即可进行后续操作。
如何处理使用用户名root添加MongoDB数据源报错的情况?
使用用户名root添加MongoDB数据源时报错,是因为添加MongoDB数据源时,必须使用用户需要同步的表所在的数据库创建的用户名,不可以使用root。
例如需要导入name表,name表在test库,则此处数据库名称为test,需要使用test数据库中创建的用户名。
为什么添加RDS数据源时已添加白名单,仍报错提示user not exist ip white list reference?
出现上述情况通常是因为用户名输入错误,请确认输入的用户名是否正确。详情请参见创建账号和数据库。
为什么不能在调度资源组上进行大数据计算?
调度资源组主要用于调度任务,资源有限,并不适合用来完成计算任务。MaxCompute具有海量数据处理能力,推荐您通过MaxCompute进行大数据计算。
通过JDBC连接串模式添加数据源时测试连通性失败,该如何处理?
通过本地自建的数据库添加数据源时测试连通性失败,该如何处理?
通过DataWorks同步PostgreSQL数据报错,该如何处理?
org.postgresql.util.PSQLException: FATAL: terminating connection due to conflict with recovery
出现该情况的原因是从数据库中拉取数据的时间较长,请增加 max_standby_archive_delay 和 max_standby_streaming_delay的参数值,详情请参见Standby Server Events。
同步MaxCompute数据至DRDS报错,该如何处理?
docs not support duplicate values in insert
出现该情况的原因是DRDS不支持全局二级索引,且不支持写入重复值。
使用Power BI连接MaxCompute报错,该如何处理?
目前MaxCompute不支持连接Power BI,建议您使用交互式分析(Hologres)进行连接,详情请参见访问域名。
配置离线同步节点时,无法查看全部的表,该如何处理?
您在配置离线同步节点时,选择来源区域仅默认显示所选数据源中的前25张表。如果数量过大,您可以输入表名进行搜索或使用脚本模式开发。
VPC环境下自建的MongoDB数据源无法连接,该如何处理?
- 方式一:通过公网进行数据同步。
- 方式二:配置自定义资源组,通过内网进行数据同步。
注意 您需要购买DataWorks专业版及以上版本,才可以使用该方式。
- 准备一台和MongoDB同区域、同网络的ECS作为调度资源,详情请参见新增自定义数据集成资源组。
- 将这台ECS的IP加入MongoDB的白名单或者安全组。
- 数据源测试连通时直接确定保存(不支持测试连通性)。
- 修改资源组为自定义调度资源,测试运行。
多线程执行DataWorks节点任务时数据乱序,该如何处理?
MaxCompute表是无序读取的,如果您未进行自定义设置,查询结果也是无序的。
MaxCompute同步数据是无序存储的。如果您对数据的顺序有要求,请在数据同步成功后,对数据进行排序。例如,在SQL语句中,需要添加order by xx limit n
对数据进行排序。
导出MaxCompute数据至AnalyticDB for MySQL失败,该如何处理?
您需要添加AnalyticDB for MySQL账号至DataWorks工作空间,以获取数据同步的权限。
使用公共资源组运行AnalyticDB for MySQL任务失败,该如何处理?
您需要开通独享资源组并连通VPC网络,再运行AnalyticDB for MySQL任务。详情请参见数据源测试连通性。
实时同步是否支持在界面运行?
实时同步不支持在界面直接运行,您需要提交并发布实时同步节点后,进入生产环境运行该节点。详情请参见创建、编辑、提交和运维实时同步节点。
在VPC环境下使用独享资源组无法连通实时同步数据源,该如何处理?
- 确认数据源和独享资源在同VPC、同可用区和同交换机下。
- 确认添加独享资源组EIP地址、独享资源组绑定的专有网络(或交换机)网段至数据库的白名单和安全组内。详情请参见独享资源组。
数据同步时连接MySQL报错,该如何处理?
数据同步时,出现报错Unknown system variable 'query_cache_size' - java.sql.SQLException: Unknown system
variable 'query_cache_size'
的原因是DataWorks数据集成不支持MySQL8.0版本。
如果您使用的是MySQL8.0版本,请新增自定义资源组,详情请参见新增自定义数据集成资源组。
在文档使用中是否遇到以下问题
更多建议
匿名提交