如何使用 azure 数据工厂下载 blob
Posted
技术标签:
【中文标题】如何使用 azure 数据工厂下载 blob【英文标题】:how to download blobs using azure data factory 【发布时间】:2022-01-15 03:35:05 【问题描述】:我正在使用数据工厂来创建我的管道,但我面临着一些挑战。 管道由一个查找组成,该查找具有一个 json 数组和一个用于循环该 json 数组的 foreach,最后是 foreach 循环内的一个 set 变量:
管道:
查找:
变量:
现在我正在寻找的是将设置变量值(类似于图像)的结果传递给复制活动或类似活动,以便将图像下载到我们的数据湖容器中。 并且下载的图片的名称应该是这样的:
id +'_'+guid()+'.png'
感谢您的帮助
【问题讨论】:
您无法传递结果,但您可以将 URL 用作 COPY 活动(带有 HTTP 数据集)中的源,并将您的数据湖用作接收器。接收器将允许您指定名称。 感谢您的回复,我正在尝试使用复制活动,但它给出了这个错误:ErrorCode=UserErrorInvalidHttpUrlAddress,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Http Url Address 'url.com/productimages/sku/s1200716-main-zoom.jpg?imwidth=48' 无效。,Source=Microsoft.DataTransfer.ClientLibrary,' 你能分享更多关于你的 Http 数据集的信息吗?是二进制的吗? URL 似乎有问题,因此请检查 BaseUrl 设置和相对路径。 【参考方案1】:使用copy data
活动并将源数据集连接到HTTP连接器以执行URL并接收到数据湖存储,您可以将图像复制到数据湖,如下所示。
-
使用
lookup
活动,从 JSON 文件中获取数组值。
查找的输出:
-
将
lookup
活动的输出传递给Foreach
活动。
@activity('Lookup1').output.value
-
在
Foreach
活动中,使用 copy data
活动将图像从 URL 复制到数据湖。
使用
set variable
是可选的,以存储查找输出中的 URL,因为您可以直接在复制活动中使用当前项目。
源数据集:
通过参数化 URL 和使用 二进制 数据集创建 HttpServer 链接服务。 在源数据集中,将数据集参数传递给链接的服务参数值。-
在 source 设置中,将当前项目 URLs 列传递给数据集属性 item().urls。
-
使用二进制数据集将 接收器 连接到数据湖存储,并创建一个数据集参数以提供接收器数据集中文件的名称。
-
在 sink 设置中,根据需要提供数据集文件名。
@concat(item().id,'_',guid(),'.png')
数据湖中的接收文件:
图片1:
图片2:
【讨论】:
以上是关于如何使用 azure 数据工厂下载 blob的主要内容,如果未能解决你的问题,请参考以下文章
如何基于 Azure 数据工厂中创建的 Blob 执行触发器?
如何使用数据工厂将 IoT 中心存储的 blob 复制到 Azure SQL
如何从 azure blob 存储中获取 json 数据并使用 azure 数据工厂将其发送到 power apps dataverse