开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

DataWorks接上游一张表,每天增量更新存csv文件至oss,历史的列少就会报错,有方法解决么?

DataWorks接上游一张表,每天增量更新存csv文件至oss,再通过外部表方式读数据进maxcompute,现在上游表增加字段,我离线同步节点也增加字段依然存文件至oss,这时候如果外部表也增加字段,读取历史及当前所有oss文件进来,历史的列少就会报错,有方法解决么?
还是历史oss文件都不能用了,只能按目前所有字段全量再抽一次进来?

展开
收起
真的很搞笑 2024-03-11 14:18:30 50 0
1 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    有方法解决该问题,无需重新全量抽取数据

    当上游表增加字段后,相应的离线同步节点和外部表都需要进行更新以反映这些变更。对于已经存储在OSS的历史CSV文件,如果直接读取进MaxCompute而没有对外部表做相应的字段增加,的确会因为历史文件缺少新加字段而导致报错。为了解决这个问题,您可以采取以下步骤:

    1. 更新外部表定义:您需要在MaxCompute中更新对应外部表的定义,添加新的字段。这样新的字段会在读取CSV文件时被识别。
    2. 使用赋值节点处理历史数据:对于已有的历史OSS文件,可以通过DataWorks的赋值节点来为缺失的字段赋予默认值或标记。这样,即使历史数据中没有新字段的数据,也能保证数据类型一致,从而避免报错。
    3. 补数据功能:如果需要将历史增量数据同步至目标表对应时间分区,可以使用运维中心的补数据功能,这允许您针对特定的时间段补充数据。
    4. 配置重置位点:如果您需要修改同步任务的配置,可以在暂停任务时记下任务暂停的时间,然后重启任务时配置这个“重置位点”,使实时同步任务从重置位点向后同步数据,避免重复消费之前的数据。
    2024-03-11 22:16:39
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载