背景
DataHub 3月份页面新增功能介绍
新增设置TimeStampUnit单位
介绍
DataHub在进行数据同步时,针对timestamp类型的数据,由于下游timestamp类型默认数据类型不一致,datahub会对timestamp类型数据做转转换,以Datahub同步到Maxcompute为例,datahub同步默认timestamp类型为微秒,而Maxcompute默认为毫秒,所以在进行同步时DataHub会对timestamp类型数据转化为毫秒同步到MaxCompute
问题
DataHub Timestamp类型实质是Long类型,所以用户如果写入时间是毫秒格式或者秒格式,DataHub也会默认按照微妙同步到下游进行转换,这样就会造成下游数据格式异常,如下图所示,显示为1970-01-19开头
解决方案
- 旧的解决方案是使用SDK重新设置TimestampUnit单位
- SinkOdpsConfig config = (SinkOdpsConfig) datahubClient.getConnector(projectName, topicName, connectorId).getConfig(); //将TimeStampUnit类型设置为秒 config.setTimestampUnit(ConnectorConfig.TimestampUnit.SECOND);
- 缺点:较为繁琐,还需要重新写代码编译运行,而且对于非编程开发人员不够友好
- 新的解决方案
- 同步页面上支持TimestampUnit设置,用户可根据Timestamp字段格式进行设置,无需代码,较为简洁