Data Lake Gen 2 的 Azure Blob 触发器函数
Azure Blob Trigger Function for Data Lake Gen 2
我想做什么?
我有一个数据湖容器。在 HDFS 名称空间内,例如:“container/year/month/day/bunch 个文件”。文件将每天上传,文件夹结构根据当前日期动态变化。当文件上传到 day 目录时,我需要我的 azure 函数来触发。这些文件将处理数据并将其转储到 sql 服务器 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 部署一个 timetrigger。并且把可以添加环境变量的代码放在里面。(这个timetrigger每天触发一次。)
我不推荐这种方法,虽然它可以实现“动态”,但我认为你的用例不需要这个。如果你真的需要这个,我会更新代码。但理论上第一种方法就足够了。
我想做什么? 我有一个数据湖容器。在 HDFS 名称空间内,例如:“container/year/month/day/bunch 个文件”。文件将每天上传,文件夹结构根据当前日期动态变化。当文件上传到 day 目录时,我需要我的 azure 函数来触发。这些文件将处理数据并将其转储到 sql 服务器 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 部署一个 timetrigger。并且把可以添加环境变量的代码放在里面。(这个timetrigger每天触发一次。)
我不推荐这种方法,虽然它可以实现“动态”,但我认为你的用例不需要这个。如果你真的需要这个,我会更新代码。但理论上第一种方法就足够了。