我们使用的是包含单个容器的 Azure 存储帐户(Blob、StorageV2(。我们还使用 Azure 数据工厂从容器中创建的 blob (.tar.gz( 触发数据复制管道。从 Azure 应用服务创建 Blob 或通过 Azure 存储资源管理器手动上传时,触发器工作正常。但是,从 Azure Databricks 上的笔记本创建 Blob 时,我们为每个创建的 Blob 获取两 (2( 个事件(两个事件的参数相同(。用于从笔记本创建 Blob 的代码类似于:
dbutils.fs.cp(
"/mnt/data/tmp/file.tar.gz",
"/mnt/data/out/file.tar.gz"
)
tmp
文件夹仅用于组装包,事件触发器附加到out
文件夹。我们也尝试了dbutils.fs.mv
,但结果相同。Azure 数据工厂中的触发规则包括:
Blob path begins with: out/
Blob path ends with: .tar.gz
容器名称为 data
。
我们确实发现了一些与零长度文件相关的类似帖子,但至少我们在任何地方都看不到它们(如果某种副产品要dbutils
(。
如前所述,只需手动上传file.tar.gz
就可以正常工作 - 触发单个事件。
我们必须恢复为使用 azure-storage-blob
库将文件从 Databricks 上传到 Blob 存储。有点无赖,但它现在按预期工作。以防万一其他人遇到这种情况。
更多信息:
https://learn.microsoft.com/en-gb/azure/storage/blobs/storage-quickstart-blobs-python