【问题标题】:Azure Data Factory "flatten hierarchy"Azure 数据工厂“扁平化层次结构”
【发布时间】:2020-03-14 01:10:43
【问题描述】:

我希望有人经历过相同的过程并可以帮助我看看以下情况是否可行。

我目前构建了一个从 S3 存储桶复制的管道。该存储桶包含大量文件夹。 Azure 数据工厂是否有办法在从 S3 存储桶复制数据时忽略文件夹而只复制文件本身?我已经读到 COPY 活动具有“扁平层次结构”,但我看到的最大限制是所有文件都被重命名,我不确定这些文件是否是这些文件夹中包含的所有文件,因为它提到它仅“在目标文件夹的第一级”。

另一个问题是 S3 存储桶有嵌套文件夹(例如:“domain/yyyy/mm/dd/file”),有些文件夹包含数据,有些则不包含。唯一的优点是所有这些文件都包含相同的架构。

此管道的最终结果如下:

1) 从 S3 存储桶复制文件而不复制文件夹结构 2) 将文件加载到 Azure 数据库中

如果有人使用 Azure 数据工厂或其他工具做过类似的事情,我将非常感谢您的见解。

【问题讨论】:

    标签: azure azure-data-factory


    【解决方案1】:

    vlado101,首先,我不得不说您在问题中提到的"flatten hierarchy" 是针对sink,而不是来源:

    由于您的目标是 SQL DB,我认为这种复制行为与您的要求无关。根据我的测试(blob 存储,不是 aws s3,很抱歉,因为我没有 asw 服务):

    2 个 json 文件驻留在子文件夹中:

    我配置了源数据集:

    请确保recursive被选为true(表示数据是从子文件夹递归读取还是仅从指定文件夹读取。注意当recursive设置为true并且sink是基于文件的存储时,未在接收器复制或创建空文件夹或子文件夹)并预览源数据如下

    执行复制活动,我在子文件夹文件中的所有数据将被转移到目标 sql db 表中:

    当然,这个测试是基于 blob 存储,而不是 s3 存储桶。我相信它们是相似的,你可以测试一下。有任何问题,请告诉我。

    【讨论】:

    • 嗨,杰,谢谢,这对我有用。 S3 和 Azure blob 存储遵循相同的逻辑,因此我能够获取文件列表。现在唯一突出的问题是,在 S3 中,嵌套文件夹结构具有创建这些文件夹所需的虚拟文件。所以现在我有大约 3/4 作为空文件,所以我不确定它们会如何被复制到 Azure SQL DB 中受到影响。另一件有点烦人的事情是 Flatten Hierarchy 也会重命名文件,我不确定他们为什么会这样做。如果您有任何见解,我们将不胜感激。
    • 您是否尝试过在二进制复制期间使用动态内容来保留文件名?只是想知道我是否应该花时间弄清楚这是否可能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2021-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多