在新文件到达时触发作业

当新文件到达外部位置(例如 Amazon S3 或 Azure 存储)时,你可以使用文件到达触发器来触发 Azure Databricks 作业的运行。 当计划作业因新数据无规律到达而效率低下时,你也可以使用此功能。

文件到达触发器会尽力确保每分钟检查一次新文件,尽管这可能会受到底层云存储性能的影响。 除了因列出存储位置中的文件而产生的云提供商成本之外,文件到达触发器不会产生其他成本。

文件到达触发器可以配置为监视 Unity Catalog 外部位置或卷的根,或者外部位置或卷的子路径。 例如,对于 Unity Catalog 根卷 /Volumes/mycatalog/myschema/myvolume/,以下是文件到达触发器的有效路径:

/Volumes/mycatalog/myschema/myvolume/
/Volumes/mycatalog/myschema/myvolume/mydirectory/

文件到达触发器以递归方式检查配置位置的所有子目录中是否有新文件。 例如,如果为位置 /Volumes/mycatalog/myschema/myvolume/mydirectory/ 创建了文件到达触发器,并且此位置具有以下子目录:

/Volumes/mycatalog/myschema/myvolume/mydirectory/subdirA
/Volumes/mycatalog/myschema/myvolume/mydirectory/subdirB
/Volumes/mycatalog/myschema/myvolume/mydirectory/subdirC/subdirD

触发器会检查 mydirectorysubdirAsubdirBsubdirCsubdirC/subdirD 中是否有新文件。

要求

若要使用文件到达触发器,需要满足以下要求:

限制

  • 仅新文件会触发运行。 使用同名文件覆盖现有文件不会触发运行。
  • 在 Azure Databricks 工作区中可使用文件到达触发器配置最多 50 个作业。
  • 为文件到达触发器配置的存储位置最多只能包含 10,000 个文件。 无法在包含更多文件的位置监视是否有新文件到达。 如果配置的存储位置是 Unity Catalog 外部位置或卷的子路径,则 10,000 个文件的限制适用于该子路径,而不适用于存储位置的根。 例如,存储位置的根的子目录中可以包含 10,000 多个文件,但配置的子目录不得超过 10,000 个文件的限制。
  • 用于文件到达触发器的路径不得包含任何外部表或目录和架构的托管位置。
  • 用于文件到达触发器的路径不能包含通配符(例如 *?)。

添加文件到达触发器

若要将文件到达触发器添加到作业,请执行以下操作:

  1. 在边栏中,单击“工作流”。
  2. 在“作业”选项卡上的“名称”列中,单击作业名称。
  3. 在右侧的“作业详细信息”面板中,单击“添加触发器”。
  4. 在“触发器类型”中,选择“文件到达”。
  5. 在“存储位置”中,输入 Unity Catalog 外部位置的根或子路径的 URL,或者要监视的 Unity Catalog 卷的根或子路径的 URL。
  6. (可选)配置高级选项:
    • 最短触发时间间隔(秒):在上一次运行完成之后等待触发运行的最短时间。 只有在等待时间过去之后,在此时段到达的文件才会触发运行。 使用此设置可以控制运行创建频率。
    • 在上次更改之后的等待时间(秒):在文件到达之后等待触发运行的时间。 如果此时段内又有文件到达,则会重置计时器。 当文件分批到达时可以使用此设置,并且需要在所有文件到达后处理整个批。
  7. 若要验证配置,请单击“测试连接”。
  8. 单击“保存”。

接收文件到达触发器失败通知

若要在文件到达触发器评估失败时接收通知,请配置用于接收作业失败通知的电子邮件或系统目标。 请参阅针对作业事件添加电子邮件和系统通知