【问题标题】:Azure Data Factory : Set a limit to copy number of files using Copy activityAzure 数据工厂:使用复制活动设置复制文件数的限制
【发布时间】:2020-08-14 15:36:31
【问题描述】:

我的管道中有一个复制活动用于从 Azure data Lake gen 2 复制文件。源位置可能有 1000 个文件,需要复制这些文件,但我们需要设置所需文件数量的限制被复制。除了自定义活动之外,ADF 中是否有任何可用选项来实现相同的功能?

例如:我在数据湖中有 2000 个文件可用,但在运行管道时,我应该能够传递一个参数来仅复制 500 个文件。

问候, 桑迪普

【问题讨论】:

    标签: azure-data-factory azure-data-lake azure-data-factory-2


    【解决方案1】:

    我认为您可以使用带有 for each 循环的查找活动和复制活动来实现此目的。您还必须使用计数器变量(这会使过程变慢,因为您必须一次复制 i 文件)。 loopkup 活动目前有 5000 个限制,因此您必须牢记这一点。

    【讨论】:

    • 谢谢Himanshu,已经使用了几乎类似的方法来解决这个问题。
    【解决方案2】:

    我将使用元数据活动来获取数据湖中所有项目的列表:https://docs.microsoft.com/en-us/azure/data-factory/control-flow-get-metadata-activity

    之后,您可以使用“ForEach”步骤循环遍历文件列表并复制它们。为了设置限制,您可以使用创建两个变量/参数:limitfiles_copied。在每一步的开始,检查你的files_copied是否小于limit,执行复制操作,files_copied加1。

    或者,您可以在第一步之后使用所有文件的名称创建一个数据库,然后使用查找和每个步骤,就像提到的@HimanshuSinha-msft 一样。在查找步骤中,您可以结合使用 SQL OFFSET+FETCH 查询和 limit 参数来仅处理特定数量的文件。这也可以解决查找活动的 5k 限制。

    【讨论】:

    • 谢谢@Andrii,我用类似的方法做到了。但是我们有一个条件,即被复制的文件应该根据文件名的数字部分按顺序排列。因此,我们使用临时表来加载所有文件名,然后根据参数中设置的批量大小将文件名移动到主表中。主表中可用的任何文件名都将在查找运算符的帮助下按排序顺序复制到目标位置。
    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 2021-07-02
    • 2020-09-15
    • 1970-01-01
    • 2021-11-21
    • 2020-12-13
    • 1970-01-01
    • 2021-06-10
    相关资源
    最近更新 更多