如何解决适用于Data Lake Gen 2的Azure Blob触发功能
我要做什么? 我有一个数据湖容器。在HDFS命名空间内,例如:“容器/年/月/日/文件束”。文件将每天上载,文件夹结构会根据当前日期动态变化。当需要将文件上传到天目录中时,我需要使用azure函数来触发。这些文件将处理数据并将其转储到sql server db [c#代码]。只有我有问题才能通过动态目录触发我的功能。请帮助我或就如何处理向我提出建议。
感谢一百万。
解决方法
您不需要使用动态文件夹名。实际上,编译时需要给出blobtrigger的路径。您应该提供一个const或在环境变量中设置它。
因此,有两种方法:
1,第一种方法很简单。就是这样:
using System;
using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
namespace FunctionApp23
{
public static class Function1
{
[FunctionName("Function1")]
public static void Run([BlobTrigger("yourcontainername/{year}/{month}/{day}/{filename}",Connection = "str")]Stream myBlob,string filename,ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{filename} \n Size: {myBlob.Length} Bytes");
}
}
}
2,第二种方式,使用blobtrigger部署时间触发。并在其中添加可以添加环境变量的代码。(此时间触发功能每天触发一次。)
我不推荐这种方法,尽管它可以实现“动态”,但我认为您的用例不需要此方法。如果您确实需要,我将更新代码。但从理论上讲,第一种方法就足够了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。