我正在尝试使用 MS Azure 中的数据工厂创建一个管道,处理 blob 存储中的数据,然后对数据运行 python 处理代码/算法,然后将其发送到另一个源。
我的问题是,如何在 Azure 函数应用中执行相同的操作?或者有更好的方法吗?
提前致谢。
夏姆
最佳答案
是的,你可以做到这一点。我最近致力于创建一个数据工厂 (ADF) 管道,该管道从 Blob 存储中提取数据并将其传输到 Snowflake。由于它是一个很好的具体示例,Snowflake 有许多连接器(包括 Python),允许您链接到它并运行查询(这就是您创建阶段以从 Azure 提取数据的方式)。这是雪花文档:https://docs.snowflake.net/manuals/user-guide/data-load-azure-create-stage.html .
您可以按照此处的文档使用 Python 创建 Azure 函数:https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-first-function-python然后替换您想要编写的任何代码,以便将数据移动到其他地方。应该指出的是,目前无法在门户中完成此操作(尽管微软提到他们希望尽快修复这一问题)。您可以对想要移动数据的任何其他端点执行此操作(这只是一个示例)。
就我而言,我使用 ADF 复制事件将数据从本地文件服务器提取到 Blob 存储中。从那里,我创建了一个连接到 Snowflake 的 Azure 函数 (Python),并仅使用 SnowSQL 查询来创建文件格式、创建 azure 阶段,然后从阶段复制到表(已创建)中。当然,对于 Snowflake,您可以从门户的工作表中运行所有这些查询,但如果您希望将所有代码存储在 ADF 中(并且您使用 Snowflake),那么这是一个很好的方法:
- 进口:
import logging
import snowflake.connector
import azure.functions as func
...
- 设置 Snowflake 连接并执行查询(只需在“main”函数中插入代码):
con = snowflake.connector.connect(
user='user',
password='password',
account='account'
)
cs = con.cursor()
try:
cs.execute("USE WAREHOUSE ...")
cs.execute("USE DATABASE ...")
...
finally:
cs.close()
con.close()
关于Python Azure 函数处理 blob 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54343289/