当前,我们正在使用Hadoop和Snowflake存储数据。
此过程是使用DISTCP将Hadoop ORC文件复制到Snowflake s3位置,然后从S3运行“复制到Snowflake”表。这会将Hadoop ORC表中的所有内容复制到Snowflake表中。
现在,我有一个新要求,其中我的Hadoop表是事务表,并且现有条目每小时都在更新。如果我将ORC文件复制到S3并运行“复制”命令,它将把更多条目添加到现有表中,而不更新现有1s。
如何在Snowflake中解决此问题?
答案 0 :(得分:1)
通常将三种策略用于此类情况:
CREATE TABLE LIKE
,COPY
和SWAP
的组合来进行事务处理。COPY
到临时表中,然后使用MERGE
合并新的/修改的行(有关可能的各种选项,请参阅文档)答案 1 :(得分:0)
为时已晚,但是一种可能且更准确的解决方案是:
这是维护快照表与日记表的典型情况。 为了避免手动执行步骤1,您还可以利用 SNOWPIPE 。
答案 2 :(得分:-1)
在这种情况下,请使用Snowflake MERGE命令将行更新/插入目标表。除此之外,您还可以探索Snowflake CDC,以仅加载先前时刻与当前时刻之间的变化增量:https://docs.snowflake.net/manuals/user-guide/streams.html