注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

基于文件的同步

在使用探索创建基于文件的同步后,您可以在同步页面的配置选项卡中更新配置。

配置基于文件的同步

基于文件的同步的配置选项包括以下内容:

参数必需的?默认值描述
Subfolder指定将在连接器中同步到Foundry的文件位置。
Filters应用筛选以限制同步到Foundry的文件。
Transformers应用变换到数据,然后同步到Foundry。
Completion strategies启用以删除文件和/或在成功同步后清空父目录。需要对源文件系统的写权限。

同步将包含指定子文件夹中的所有嵌套文件和文件夹。

筛选

筛选允许您在将源文件导入Foundry之前对其进行筛选。支持的筛选类型包括:

  • 排除已同步文件: 仅同步自上次同步后新增或尺寸或日期修改的文件。
  • 路径匹配: 仅同步路径(相对于连接器的根)与正则表达式匹配的文件。
  • 路径不匹配: 仅同步路径(相对于连接器的根)与正则表达式不匹配的文件。
  • 最后修改时间之后: 仅同步在指定日期和时间之后修改的文件。
  • 文件大小介于: 仅同步大小在指定最小和最大字节值之间的文件。
  • 任何文件路径匹配: 如果任何文件的相对路径与正则表达式匹配,同步子文件夹中所有未被其他筛选器筛选的文件。
  • 至少N个文件: 仅在至少有N个文件剩余时同步所有筛选文件。
  • 限制文件数量: 限制每次事务中保留的文件数量。此选项可以提高增量同步的可靠性。

变换

变换允许您在上传到Foundry之前执行基本的文件变换(例如压缩或解密)。在同步过程中,所选取的文件将按照所选的变换进行修改。

建议在Foundry中使用Pipeline Builder代码库进行数据变换,以从溯源和分支中受益,而不是使用Data Connection变换器。

Data Connection支持以下变换器:

  • 使用Gzip压缩
  • 合并多个文件
    • 将多个文件合并为一个文件。
  • 重命名文件
    • 将给定文件名子字符串的所有出现替换为新的子字符串。
    • 通过将^(.*/)替换为/来删除文件名中的目录路径。
  • 使用PGP解密
    • 解密已使用PGP加密的文件。
    • 需要代理系统配置PGP密钥。
    • 不适用于在直接连接上运行的同步。
  • 将时间戳附加到文件名
    • 在每个被摄入的文件的文件名中添加自定义格式的时间戳。

完成策略

完成策略提供了一种在成功批量同步这些文件到Foundry数据集后删除文件和空父目录的方法。当数据通过写入中间S3存储桶或Foundry读取的其他文件存储系统进行同步时,这可能是有用的。如果Foundry读取的数据已是短期副本,则通常在数据被读取并成功写入Foundry后删除是安全的。

完成策略的限制及替代方案

完成策略受到几个重要限制和注意事项的影响。以下描述了这些限制及可能的缓解措施或替代方案。

完成策略支持

完成策略仅在使用代理工作运行时时支持。当使用直接连接代理代理运行时时,我们建议将完成策略提供的功能实现为下游外部变换。

例如,假设您有一个直接连接到包含文件foo.txtbar.txt的S3存储桶。您希望使用文件批量同步将它们复制到数据集,然后从S3中删除这些文件。实现这一目标的推荐方法不使用完成策略,而是执行以下操作:

  • 配置一个不包含任何完成策略的批量同步并安排其运行。
  • 编写一个下游外部变换任务,该任务在同步输出数据集更新时被安排运行,并将同步的数据作为输入。
  • 在该外部变换中,编写Python变换代码以遍历同步数据集中出现的文件,并调用S3以从存储桶中删除这些文件。

请注意,如果任何删除调用失败,此方法是可重试的,并且保证在尝试执行任何删除之前数据已成功提交到Foundry。此方法还与增量文件批量同步兼容。

完成策略是尽力而为

完成策略是尽力而为的,这意味着它们不保证数据会被有效删除。以下是可能导致完成策略失败的一些情况:

  1. 如果在批量同步将数据提交到Foundry后但在完成策略运行之前,代理工作运行时崩溃或重新启动,完成策略将不会被重试。
  2. 如果用于连接的凭据没有写权限,批量同步可能会成功读取数据并提交到Foundry,但无法执行完成策略指定的删除操作。

总的来说,我们建议尽可能使用替代方案来代替完成策略。自定义完成策略不再受支持。

优化基于文件的同步

警告

该指南推荐给正在设置新同步或排除故障的用户。如果您的同步已经可靠运行,则无需采取任何措施。

将大量文件同步到单个数据集可能会因多种原因而具有挑战性。

考虑一个意图上传一百万个文件的同步。在遍历源系统并上传所有文件但一个文件后,网络问题导致整个同步失败。因为同步是事务性的;如果同步失败,则整个事务也会失败,那么到那时为止所做的所有工作将会丢失。

网络问题是导致同步失败的几个常见原因之一,导致数小时的工作丢失并对源系统和代理造成不必要的负担。即使没有网络问题或出错,同步大量文件也可能需要很长时间。

如果数据集随着时间增长,则同步数据作为SNAPSHOT的时间会增加。这是因为SNAPSHOT事务将数据集中的所有数据同步到Foundry。相反,使用配置为事务类型APPEND的同步以增量导入您的数据。由于您将同步较小的、离散的数据块,您将创建一个有效的检查点;同步失败将导致最少量的重复工作,而不是需要完全重新运行。此外,由于您不再需要为每次同步上传所有数据,因此您的数据集同步将更快。

配置增量APPEND同步

APPEND事务需要额外配置才能成功运行。

默认情况下,同步到Foundry的文件没有经过筛选。然而,APPEND同步需要筛选以防止同一文件被导入。我们建议使用排除已同步文件限制文件数量筛选来控制在单次同步中导入到Foundry的文件数量。此外,添加一个完成策略以在同步成功完成后删除文件。最后,安排您的同步以保持与源系统的同步。