DataWorks数据集成常见问题

更新时间:
复制为 MD 格式

本文将会为您介绍通过DataWorks同步数据至Hologres时,常见的问题以及对应的排查手段,以帮助您能在同步遇见问题时能快速的解决。

开源DataX如何将数据同步至Hologres?

开源DataX可以通过选用Hologres Writer,将数据同步至Hologres,相比传统的PostgreSQL Writer,性能会更好。目前Connector已经开源,详情请参见Git查看使用方式

报错:Holohub does not binary type of Hologres for now?

  • 原因:DataWorks的写入模式使用了SDK模式,建Hologres表时存在不支持的数据类型,比如JSONB等,该模式下支持的数据类型较少。
  • 解决措施:请修改同步模式为INSERT模式。

报错:internal error:Connect timeout,Connection refused.

  • 原因:某个原因导致Hologres节点重启了。
  • 解决措施:对报错的任务进行重试,然后联系技术支持同学进行排查。

报错:ERROR:insufficient data left in message;nest exception is org.postgresql.

org.springframework.dao.DataAccessResourceFailureException: StatementCallback; SQL UPDATE  xxx_user_v6jk3jdgt4zavy2btpkglwje SET  first_version=C
  xxx CE xxx _s_upd xxx
  xxx ESCE( xxx ) xxx store 'Google' xxx  : ERROR: insufficient data left in message; nested exc
eption is org.postgre xxx 11.PSQLException: ERROR: insufficient data left in message
        at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:107)
  • 原因:包含了脏数据。
  • 解决措施:检查写入的数据并进行过滤。

报错:ERROR:internal error :column 2501 is not found in SparseSchema.

org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL [_TEMPLATE_xxx xxx_xxx xxx
    xxx      xxx
hema.xxx                                                        ']; SQL state [XX000]; error code [0]; ERROR: internal error: Column 2501 is not found in SparseSchema.
Where: [query_id:20011107142595326]; nested exception is org.postgresql.util.PSQLException  ERROR: internal error: Column 2501 is not found in SparseSchema.
Where: [query_id:20011107142595326]
	at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1542)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java xxx)

解决措施:可进行重试,如果重试仍然报错请联系技术支持同学。

报错:ERROR Worker - should not happen.

[embedded-holo-client-worker] ERROR Worker - should not happenjava.lang.NoSuchMethodError: org.postgresql.model.Column.setPrecision(I)V at com.alibaba.hologres.org.postgresql.util.MetaUtil.getRecordSchema(MetaUtil.java:274) ~[holo-client-1.2.16.3.jar:na]
  • 原因:使用JDBC、Driver两个包,导致冲突。
  • 解决措施:请检查项目中的Holo-ClientPostgreSQL-Holo,请删除PostgreSQL-Holo依赖,仅保留一个Holo-Client版本。

报错:Refresh meta timeout, target version is xxx but current version is yyy.

  • 原因:某些原因导致Hologres有个节点进行了重启或者频繁的做DDL,导致节点与其他节点版本对应不齐,从而出现报错。
  • 解决方法:快速恢复的办法是进行实例重启,也可以查找活跃Query,Kill运行时间较长的Query,详情请参见管理Query

报错:同步数据出现业务脏数据情况,数据类型转换一处,转位long类型出现溢出。

  • 原因:同步时存在不支持的数据类型,比如MySQL BIGINT(20) UNSIGNED。
  • 解决方法:修改Hologres建表类型,比如修改为TEXT,详情请参见MySQL数据类型映射

报错:Rejected by ip white list xxx .

  • 原因:Hologres开启了白名单,导致写入时会被白名单拦截。
  • 解决方法:
    • 如果通过模式使用的是SDK,请修改同步模式为INSERT模式。
    • 如果是INSERT模式仍然报错,说明是IP被拦截,可以将报错中的IP加入到白名单中。