新建跨源连接,显示已激活,但使用时报communication link failure错误
-
原因
网络连通性问题,建议用户检查安全组选择是否正确,检查安全组网络(vpc)配置。
-
解决方法:
示列:创建RDS跨源,使用时报“communication link failure”错误。
a. 将原有跨源连接删除重新创建。再次创建时,必须确保所选“安全组”、“虚拟私有云”、“子网””和“目的地址”与RDS中的设置完全一致。
说明请选择正确的“服务类型”,本示例中为“RDS”。
b.检查安全组网络(vpc)配置。
若按照步骤1重建跨源连接后还是报错“communication link failure”,则检查vpc配置。
跨源访问MRS HBase,连接超时,日志未打印错误
用户在跨源连接中没有添加集群主机信息,导致KRB认证失败,故连接超时,日志也未打印错误。建议配置主机信息后重试。
在“增强型跨源”页面,单击该连接“操作”列中的“修改主机信息”,在弹出的对话框中,填写主机信息。格式为:“IP 主机名/域名”,多条信息之间以换行分隔。
详细操作请参考《数据湖探索用户指南》中的“修改主机信息”章节。
DLI跨源连接报错找不到子网
跨源连接创建对等连接失败,报错信息如下:
Failed to get subnet 2c2bd2ed-7296-4c64-9b60-ca25b5eee8fe. Response code : 404, message : {"code":"VPC.0202","message":"Query resource by id 2c2bd2ed-7296-4c64-9b60-ca25b5eee8fe fail.the subnet could not be found."}
创建跨源连接之前,需要确认是否勾选了“VPC Administrator”,如果只是勾选了全局的tenant administrator,会提示找不到子网。
跨源RDS表,执行insert overwrite报Incorrect string value错误
问题现象
客户在数据治理中心DataArts Studio创建DLI的跨源RDS表,执行insert overwrite语句向RDS写入数据报错:DLI.0999: BatchUpdateException: Incorrect string value: '\xF0\x9F\x90\xB3' for column 'robot_name' at row 1。
原因分析
客户的数据中存在emoj表情,这些表情是按照四个字节一个单位进行编码的,而通常使用的utf-8编码在mysql数据库中默认是按照三个字节一个单位进行编码的,这个原因导致将数据存入mysql数据库时出现错误。
出现该问题可能原因如下:
数据库编码问题。
处理步骤
修改字符集为utf8mb4。
1.执行如下SQL更改数据库字符集。
ALTER DATABASE DATABASE_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
2.执行如下SQL更改表字符集。
ALTER TABLE TABLE_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
3.执行如下SQL更改表中所有字段的字符集。
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
创建RDS跨源表报空指针错误
问题现象
客户创建RDS跨源表失败,报空指针的错误。
原因分析
客户建表语句:
CREATE TABLE IF NOT EXISTS dli_to_rds
USING JDBC OPTIONS (
'url'='jdbc:mysql://to-rds-1174405119-oLRHAGE7.datasource.com:5432/postgreDB',
'driver'='org.postgresql.Driver',
'dbtable'='pg_schema.test1',
'passwdauth' = 'xxx',
'encryption' = 'true');
客户的RDS数据库为PostGre集群,url的协议头填写错误导致。
处理步骤
修改url为'url'='jdbc:postgresql://to-rds-1174405119-oLRHAGE7.datasource.com:5432/postgreDB',重新创建跨源表成功。
对跨源DWS表执行insert overwrite操作,报错:org.postgresql.util.PSQLException: ERROR: tuple concurrently updated
问题现象
客户对DWS执行并发insert overwrite操作,报错:org.postgresql.util.PSQLException: ERROR: tuple concurrently updated。
原因分析
客户作业存在并发操作,同时对一张表执行两个insert overwrite操作。
一个cn在执行:
TRUNCATE TABLE BI_MONITOR.SAA_OUTBOUND_ORDER_CUST_SUM
另外一个cn在执行:
call bi_monitor.pkg_saa_out_bound_monitor_p_saa_outbound_order_cust_sum
这个函数里面有delete 和 insert SAA_OUTBOUND_ORDER_CUST_SUM的操作。
处理步骤
修改作业逻辑,避免对同一张表并发执行insert overwrite操作。
通过跨源表向CloudTable Hbase表导入数据,executor报错:RegionTooBusyException
问题现象
客户通过DLI跨源表向CloudTable Hbase导入数据,原始数据:HBASE表,一个列簇,一个rowkey运行一个亿的模拟数据,数据量为9.76GB。导入1000W条数据后作业失败。
原因分析
- 查看driver错误日志。
- 查看executor错误日志。
- 查看task错误日志。
结论:rowkey过于集中,出现了热点region。
处理步骤
- Hbase做预分区。
- 把rowkey散列化。
建议与总结
建议DLI在写入数据时也将数据离散化,避免大量数据写入同一个regionServer,同时,在insert语句后增加distribute by rand()。
通过DLI跨源写DWS表,非空字段出现空值异常
问题现象
客户在DWS建表,然后在DLI创建跨源连接读写该表,突然出现如下异常,报错信息显示DLI向该表某非空字段写入了空值,因为非空约束存在导致作业出错。
报错信息如下:
DLI.0999: PSQLException: ERROR: dn_6009_6010: null value in column "ctr" violates not-null constraint
Detail: Failing row contains (400070309, 9.00, 25, null, 2020-09-22, 2020-09-23 04:30:01.741).
原因分析
1.DLI源表对应字段cir为double类型。
创建源表
2.目标表对应字段类型为decimal(9,6)。
创建目标表
3.查询源表数据,发现导致问题产生的记录ctr值为1675,整数位(4位)超出所定义的decimal精度(9 – 6 = 3位),导致double转decimal时overflow产生null值,而对应dws表字段为非空导致插入失败。
处理步骤
修改目的表所定义的decimal精度即可解决。
更新跨源目的端源表后,未同时更新对应跨源表,导致insert作业失败
问题现象
客户在DLI中创建了DWS跨源连接和DWS跨源表,然后对DWS中的源表schema进行更新,执行DLI作业,发现DWS中源表schema被修改为更新前的形式,导致schema不匹配,作业执行失败。
原因分析
DLI跨源表执行insert操作时,会将DWS源表删除重建,客户没有对应更新DLI端跨源表建表语句,导致更新的DWS源表被替换。
处理步骤
新建DLI跨源表,并添加建表配置项 truncate = true(只清空表数据,不删除表)。
建议与总结
在更新跨源目的端源表后,必须同时更新对应DLI跨源表。