触发从 blob 复制数据到 ADLS 从文件名中提取路径
Triggered copy data from blob to ADLS extracting path from filename
我正在尝试将我们的数据集中到 ADLSgen2 数据湖中。我们的一个数据集 'dumped' 在 blob 存储中,我想要一个触发副本。
存储在 blob 存储中的文件有一个数据作为文件名(可以是任意日期),格式为 JSON。我想要的是将新文件(二进制)复制到数据湖上的文件夹,路径使用文件名中存在的日期片段。
2020-01-01.json
→raw/blob/2020/01/raw_reports_blob_2020-01-01.json
首先,我在 Azure Synapse 中尝试了数据复制作业和管道,但我不确定如何使用源文件名的详细信息设置接收器路径。似乎复制数据工具无法由新的 blob 文件触发。管道方法看起来很强大,我想这是可能的。我想要的东西在 Linux 上并不难,所以我想它在 Azure 中也一定是可能的。
其次,我尝试创建一个 Azure 函数,因为我对 Python 非常满意,但是在这里我遇到了类似的问题,因为我需要定义 in/out 绑定。 out 绑定是在设计时定义的,不会让我自由选择基于源文件名的路径类型。此外,对于一个简单的二进制复制操作来说,感觉有点过分了。我可以用 blob 中的新文件触发函数,读取它们没有问题。
我是 Azure 的新手,非常欢迎任何对解决方案的帮助。
也看到这个答案:
在 ADLS 中,每个 sē 都有“复制”的概念。您 read/download 从来源和 write/upload 到目标。
正如有人提到的,数据工厂可以做到这一点。
您还可以使用:
azcopy
来自 Power Shell Azure 函数。 azcopy cp "https://[srcaccount].blob.core.windows.net/[container]/[path/to/blob]?[SAS]" "https://[destaccount].blob.core.windows.net/[container]/[path/to/blob]?[SAS]"
- Python/Java/... Azure 函数。您必须下载文件(如果文件大则分块)并上传(如果大则分块)。
- 数据块。这类似于使用 Azure Synapse Analytics 在存储帐户之间复制数据的工具滥用。
- Azure 逻辑应用。参见 this and this。从未使用过它们,但我相信它们比 Azure Function 代码更少并且具有一些编程功能,如果它可以帮助您以编程方式创建目标路径。
要记住的事情:
- 数据工厂,可能很贵。特别是在消费计划上与 Azure Functions 相比。
- 消费计划中的 Azure Functions 在超时前最多有 10 分钟。因此,如果您在 GBs/TBs.
中有文件,则无法使用它
- 如果适用,您将支付出口费用。
我正在尝试将我们的数据集中到 ADLSgen2 数据湖中。我们的一个数据集 'dumped' 在 blob 存储中,我想要一个触发副本。
存储在 blob 存储中的文件有一个数据作为文件名(可以是任意日期),格式为 JSON。我想要的是将新文件(二进制)复制到数据湖上的文件夹,路径使用文件名中存在的日期片段。
2020-01-01.json
→raw/blob/2020/01/raw_reports_blob_2020-01-01.json
首先,我在 Azure Synapse 中尝试了数据复制作业和管道,但我不确定如何使用源文件名的详细信息设置接收器路径。似乎复制数据工具无法由新的 blob 文件触发。管道方法看起来很强大,我想这是可能的。我想要的东西在 Linux 上并不难,所以我想它在 Azure 中也一定是可能的。
其次,我尝试创建一个 Azure 函数,因为我对 Python 非常满意,但是在这里我遇到了类似的问题,因为我需要定义 in/out 绑定。 out 绑定是在设计时定义的,不会让我自由选择基于源文件名的路径类型。此外,对于一个简单的二进制复制操作来说,感觉有点过分了。我可以用 blob 中的新文件触发函数,读取它们没有问题。
我是 Azure 的新手,非常欢迎任何对解决方案的帮助。
也看到这个答案:
在 ADLS 中,每个 sē 都有“复制”的概念。您 read/download 从来源和 write/upload 到目标。
正如有人提到的,数据工厂可以做到这一点。
您还可以使用:
azcopy
来自 Power Shell Azure 函数。azcopy cp "https://[srcaccount].blob.core.windows.net/[container]/[path/to/blob]?[SAS]" "https://[destaccount].blob.core.windows.net/[container]/[path/to/blob]?[SAS]"
- Python/Java/... Azure 函数。您必须下载文件(如果文件大则分块)并上传(如果大则分块)。
- 数据块。这类似于使用 Azure Synapse Analytics 在存储帐户之间复制数据的工具滥用。
- Azure 逻辑应用。参见 this and this。从未使用过它们,但我相信它们比 Azure Function 代码更少并且具有一些编程功能,如果它可以帮助您以编程方式创建目标路径。
要记住的事情:
- 数据工厂,可能很贵。特别是在消费计划上与 Azure Functions 相比。
- 消费计划中的 Azure Functions 在超时前最多有 10 分钟。因此,如果您在 GBs/TBs. 中有文件,则无法使用它
- 如果适用,您将支付出口费用。