我试图理解@incremental
装饰器中strict_append=False
和strict_append=True
之间的区别。
我看了视频:https://www.youtube.com/watch?v=R8LVvy4v7Es并尝试了不同的组合(上传不同的文件,更新记录等),但仍然不明白什么是strict_append=True
的情况。
我试图理解@incremental
装饰器中strict_append=False
和strict_append=True
之间的区别。
我看了视频:https://www.youtube.com/watch?v=R8LVvy4v7Es并尝试了不同的组合(上传不同的文件,更新记录等),但仍然不明白什么是strict_append=True
的情况。
2条答案
按热度按时间wj8zmpe11#
我以前从来没有使用过strict_append,所以我通过阅读代码来回答。您还应该能够在函数上看到
ctrl
+click
(或cmd
+click
)的代码。它包含一些pydoc,其中说:**strict_append(bool,optional):**如果为True,则底层代工事务类型为APPEND。请注意,写入操作可能不会覆盖任何文件,甚至包括Parquet摘要元数据或Hadoop SUCCESS文件等辅助文件。所有Foundry格式的增量写入都应支持此模式。
它似乎是在版本1中添加的。312.0
这是我在代码库中看到的:
稍后使用
mode
示例化事务类型。给定上面的if条件,看起来如果strict_append
为true,您将始终获得一个append事务,因此您不会替换或修改当前文件内容。jtjikinw2#
strict_append
似乎确保您获得APPEND
事务,而Foundry将使用UPDATE
事务。根据Foundry文档,Foundry将决定使用
APPEND
事务来直接转换输入行。如果您的PySpark或Pandas转换是一个添加的输出行仅是添加的输入行的函数,根据文档中的append示例,默认模式将产生正确的增量转换。
如果Foundry决定您正在执行
UPDATE
事务,它可能会意外地重新生成整个数据集。如果您不转换
some_input.dataframe()
,而是使用some_input.filesystem()
自己处理添加的文件,则可能会发生这种情况。