背景
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字段格式進行設定,無需代碼,較為簡潔