当前位置: 首页 > 知识库问答 >
问题:

如何在Azure函数中从存储容器中读取多个文件

子车飞文
2023-03-14

我有一个Azure Functions应用程序(Python),其中我必须读取存储在Azure存储帐户(StorageV2)中的多个CSV文件来验证它们。

但是,此文件夹中的文件名和CSV文件数量会随时间变化。应用程序使用HTTP绑定触发,最好动态检查文件夹的内容,然后依次处理文件夹中的所有CSV文件。

从文档中可以看出,Azure函数似乎对输入和输出使用绑定,然而,示例中只显示了指向单个文件的(多个)输入绑定,而不是任何类型的文件夹/容器。因为我事先不知道文件的数量和文件名,这将很难实现。

例如:function.json

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "inputcsv",
      "type": "blob",
      "dataType": "binary",
      "path": "samplesCSVs/{singleCSVfile}",
      "connection": "MyStorageConnectionAppSetting",
      "direction": "in"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    }
  ]
  "scriptFile": "__init__.py"
}

可以在这里指向文件夹吗?还是以另一种方式动态读取存储帐户中的文件?

我能想到的唯一其他选择是提前简单地压缩所有的CSV文件,这样我就可以使用一个输入绑定到这个压缩文件,然后在一个临时文件夹中解压它们来处理它们,但是效率会更低。

资料来源:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-input?tabs=python

https://docs.microsoft.com/en-us/azure/azure-functions/functions-add-output-binding-storage-queue-vs-code?tabs=in-process

共有2个答案

楚承天
2023-03-14

似乎我对Azure函数的工作原理有误解。因为它仍然是Python代码,而且Azure有一个Python SDK可用于连接存储帐户和操作文件,所以这是实现我试图完成的任务的最佳方式。

Azure Functions的输入/输出绑定似乎只有在使用特定触发器时才有用,但我的问题不需要这样做。

感谢zolty13为我指明了正确的方向。

资料来源:

https://docs.microsoft.com/en-us/python/api/overview/azure/storage-blob-readme?view=azure-python

辛建业
2023-03-14

使用Azure Blob触发器,您只能一对一地匹配,更改或创建新Blob将触发函数的执行。

可以在容器级别使用事件网格和筛选事件,并使用Azure函数处理特定事件:

https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-event-overview

 类似资料:
  • 我有一个map-reduce作业,并且reducer获得一个驻留在Azure Blob存储中的文件的绝对地址,并且reducer应该打开它并读取它的内容。在配置Hadoop集群(HDInsight)时,我添加了包含文件的存储帐户。因此,还原器必须有权访问这个Blob存储,但Blob存储不是我的作业的默认HDFS存储。我的reducer中有以下代码,但它给了我一个FileNotFound错误消息。

  • 我的应用程序见解中有一个“持续导出”过程,该过程基于我的新见解创建新文件。 除此之外,我有一个过程,使用Azure数据工厂,用Blob存储数据加载一个SQL表。 问题是:我不能从ADF读取数据,只能从Blob存储中读取新文件,而且我总是在处理相同的数据。此时,我忽略了SQL存储过程中加载过程后的重复数据,但我想通过只从Blob存储中读取新数据来提高这个过程的效率,我可以从ADF读取新数据吗?有人能

  • 我正在保存一个excel文件到设备(Android7)的存储,现在我想当用户点击按钮时打开excel文件,但现在当按钮点击应用程序会崩溃,而当im到我的存储和im打开文件直接在我的应用程序之外没有问题!!如果我的代码行错了,请帮忙,谢谢 日志:Android.os.FileUriExposedException:file:///storage/emulated/0/MessangerApp/Mes

  • 问题内容: 我需要在存储过程中读入由SSIS包创建的日志文件。 有什么好方法吗? 我尝试使用此代码,但将文件内容显示为乱码。有没有解决的编码问题?有没有更简单的方法? 问题答案: 您是否尝试过将笔直插入?例如:

  • 我正在尝试将数据从Azure存储容器加载到Azure Databricks中的Pysark数据帧。当我阅读txt或CSV文件时,它正在工作。但当我尝试读取.xlsx文件时,我会遇到以下问题。 Apache Spark 3.2.0,Scala 2.12 以下是我正在执行的步骤 它正在工作 不工作 加载xlsx文件时出现以下错误: 注意:我能够从dbfs和挂载点读取。

  • 读取行和数字并将其存储到数组X中,但数组只到位置0和1,当它改变行时,它只将新的数字(例如NUM 3)写入旧数字所在的位置(例如pos 0中的NUM 1) 有什么解决办法吗?