适用于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部署时间触发。并在其中添加可以添加环境变量的代码。(此时间触发功能每天触发一次。)

我不推荐这种方法,尽管它可以实现“动态”,但我认为您的用例不需要此方法。如果您确实需要,我将更新代码。但从理论上讲,第一种方法就足够了。