在Foundry中处理压缩文件的最佳方法是什么?

问题描述

将压缩文件集成到Foundry中的推荐方法是什么?我可以看到3个选项:

  1. 在框上解压缩(如果有此选项),然后使用数据连接来摄取解压缩的文件
  2. 使用一些Data Connection插件(如果存在)在提取过程中解压缩文件
  3. 导入压缩文件并进行一些转换以解压缩它们。

解决方法

通常我会建议反对1&2。我什至经常做与1&2相反的事情-在提取文件之前我先压缩文件,并且永远不会在铸造数据集中的任何地方以未压缩的形式保存文件。

如果仅使用gzip或bzip2压缩文件,而不使用tarball压缩文件,那么Foundry允许您透明地访问它们,就好像它们根本没有压缩一样。例如,在此示例数据集中,我将单个文件test1.csv.bz2上传到其中: dataset

但是,这对于将多个文件压缩到一个存档中的压缩文件或其他存档格式来说很困难。因此,如果您可以选择排列方式以使它们像这样压缩,那么这是最简单且可能是最佳的方法。

否则,我建议使用方法3-在内存中提取存档,然后将您作为拼花地板计算出的所有结果写到下游数据集中。

,

通常,选项3(在转换中解压缩)是最佳选择。

选项1 引入了对某些非托管外部工具的依赖,以进行解压缩。如果您可以访问此框,则可以保留这样的东西并不是没有问题的,但这当然不是理想的选择。

现有插件(zip和tgz)支持

选项2 ,乍一看,这似乎是一个不错的选择。问题在于,对代理执行此操作会增加代理的负担。这些通常运行在没有大量内存或计算能力的小型本地机顶盒上,并且如果您碰巧加收税费,它将影响该代理上运行的所有内容(如果您设法将其关闭) ;如果您不将其击倒,则所有操作的运行速度将比您未在代理上进行的工作要慢得多。

选项3 将需要Java或Python转换(可以访问原始文件),并且比选项2 稍微复杂一些,但它应该更健壮。您(通常)具有更多的计算能力来解决该问题。

关于数据连接的一般知识是,代理应该做的工作尽可能少。他们应该只是将数据传输到平台中,以便在其中进行清理和转换。