自动加载程序支持两种检测新文件的模式:目录列表和文件通知。 你可以在流重启时切换文件发现模式,并且仍可获得精确一次的数据处理保证。
目录列表模式
在目录列表模式下,自动加载程序通过列出输入目录来识别新文件。 通过目录列表模式,你无需任何权限配置即可快速启动自动加载程序流,而无需访问云存储上的数据。
在 Databricks Runtime 9.1 及更高版本中,自动加载程序可以自动检测文件是否以词法顺序到达云存储,并显著减少检测新文件所需的 API 调用量。 有关更多详细信息,请参阅具有目录列表模式的自动加载程序流。
文件通知模式(建议)
文件通知模式利用了云基础结构帐户中的文件通知和队列服务。 自动加载程序可以自动设置从输入目录中订阅文件事件的通知服务和队列服务。 如果在包含有问题的文件的外部位置上启用 文件事件 ,则设置自动加载程序流时无需提供其他权限。
文件通知模式与目录列表相比,文件事件的性能更高且可缩放。 Databricks 建议对于大多数工作负载使用文件事件的文件通知模式,而不是目录列表模式。 如果目前在目录列表模式下使用自动加载程序,Databricks 建议使用 mfile 事件迁移到文件通知模式,以查看显著的性能改进。 请参阅 在文件通知模式下配置自动加载程序流。
各模式支持的云存储
下表列出了云存储提供程序支持的每个文件检测模式的计算。
如果从外部位置或 DBFS 装载迁移到 Unity Catalog 卷,自动加载程序将继续提供仅一次的保证。
云存储 | 目录列表 | 没有文件事件的文件通知 | 包含文件事件的文件通知 |
---|---|---|---|
AWS S3 | 所有版本 | 所有版本 | Databricks Runtime 14.3 LTS 及更高版本 |
ADLS | 所有版本 | 所有版本 | Databricks Runtime 14.3 LTS 及更高版本 |
谷歌云存储 (GCS) | 所有版本 | 所有版本 | Databricks Runtime 14.3 LTS 及更高版本 |
Azure Blob 存储 | 所有版本 | 所有版本 | 不支持 |
分布式文件系统(DBFS) | 所有版本 | 仅适用于装入点 | Databricks Runtime 14.3 LTS 及更高版本,如果 DBFS 挂载点在 Unity Catalog 中定义了外部位置 |
Unity Catalog 卷 | Databricks Runtime 13.3 LTS 及更高版本 | 不支持 | Databricks Runtime 14.3 LTS 及更高版本 |