理想情况下,先加载历史数据,然后加载当前数据,但我们已经将当前数据加载到来自Kafka的雪花中,作为Upsert输出。让我们从S3转储中说,我们还必须在以后摄入历史数据,并且这些数据将从diff源加载。我们能做到这一点吗?
发布于 2022-11-14 17:26:16
您肯定需要为历史数据创建新的数据源。这样,历史数据就会被吸收到Upsolver中。
下一步的设计注意事项:如果只追加输出(只需继续插入),则雪花输出可以同时使用历史数据源和当前数据源联合。您可以在创建UI输出的同时添加多个数据源,也可以编辑SQL,为两个数据源添加UNION,并且历史数据和当前数据都将进入目标表。如果历史数据是第一位的,并且在当前数据源开始接收数据之前被完全吸收,此设计也将处理Upsert用例。
但是,在这个特定的问题中,由于历史数据是晚到的,我们不能使用这种方法,因为将来到达的历史数据可能会更新和覆盖当前的最新数据。
解决方案1:--如果您可以停止当前数据源,直到历史数据完全处理为止。
output.
G 213
解决方案2:如果当前数据量很小,可以从一开始就重新处理
output.
G 225开始停止当前数据雪花输出作业(在步骤1中停止)
解决方案3:
希望这能有所帮助。
https://stackoverflow.com/questions/74367896
复制相似问题