azure - 如何在 azure 数据工厂中使用 azure 函数将数据写入文件
问题描述
我在天蓝色数据湖存储 gen2 位置有一个文件(employee_details.csv),它是一个空白文件。我要求仅将当前日期时间存储到文件内容中。但我无法在 azure 数据工厂中找到任何可用的内置组件。因此,我正在考虑使用 azure 函数,但我是 azure 函数的新手。您能指导我如何使用 azure 函数实现相同的功能吗?
解决方案
对于这样一个简单的用例,Azure 函数有很多开销。尽管如此,当从 ADF 管道触发时,下面的函数对我有用。要使该功能正常工作,必须启用其托管标识并授予对输出文件的写访问权限 - 通过 RBAC 或 ACL。此函数的生产版本需要错误处理、参数化等。在 Azure 中部署该函数有详细的文档,因此我没有在这里讨论。
import azure.functions as func
import logging
import datetime
from azure.identity import ChainedTokenCredential,ManagedIdentityCredential
import os, uuid, sys
from azure.storage.filedatalake import DataLakeServiceClient
def main(req: func.HttpRequest) -> func.HttpResponse:
MSI_credential = ManagedIdentityCredential()
credential_chain = ChainedTokenCredential(MSI_credential)
client = DataLakeServiceClient(
https://<your-storage-account>.dfs.core.windows.net/",
credential = credential_chain)
# Create file
file_client = client.get_file_client(
file_system = "<your-adlsgen2-container>",
file_path = "<your-timestamp-file")
file_client.create_file()
# Write current timestamp to file
current_date_time = datetime.datetime.now()
file_content = current_date_time.strftime("%m/%d/%Y %I:%M %S %p")
file_client.append_data(data=file_content, offset = 0)
file_client.flush_data(len(file_content))
return func.HttpResponse("Ok", status_code=200)
推荐阅读
- arrays - 如何将array2的所有对象推送到array1
- r - H2O AutoML leave-one-out 的性能比 10 倍交叉验证好太多
- raspberry-pi - raspian Buster 无法连接到 eduroam wpa_supplicant v.2.8
- javascript - 无法在编辑器中显示图像
- mysql - ReferenceError:连接未定义nodejs mysql
- spring - 如何禁用弹簧启动执行器弹性搜索健康请求?
- symfony - 当我尝试创建新的时,php bin/console make:crud 中有错误
- python - 如何使用 python 在 Windows 10 中进行并行处理
- python - 根据条件语句在熊猫数据框中生成新列
- bash - 如何使用 cat 命令从顶部读取文件?