【问题标题】:Azure function write_dataframe_to_datalake in python working fine on VScode but fails when deployed to the cloudpython中的Azure函数write_dataframe_to_datalake在VScode上运行良好,但在部署到云时失败
【发布时间】:2022-01-06 14:41:16
【问题描述】:

我是 Azure 函数的新手,正在尝试编写一个函数(Blobtrigger),该函数读取上传到 blob 上的文件(该文件是二进制 .dat 文件),进行一些转换以将数据转换为 pandas 数据框架,然后将其转换为 .parquet 文件格式并将其保存在 azure datalake 上。 当我在 VSCode 中本地运行该函数时一切正常,但是当我将其上传到 azure 云函数时,我收到错误并且函数失败。

在查看代码并通过单独上传到云上检查每个步骤后,我发现代码在将 .dat 文件转换为数据帧之前工作正常,但是当我添加将其保存到数据湖的函数时失败。我正在使用微软教程中的以下功能。

def write_dataframe_to_datalake(df, datalake_service_client, filesystem_name, dir_name, filename):
    file_path = f'{dir_name}/{filename}'

    file_client = datalake_service_client.get_file_client(filesystem_name, file_path)

    processed_df = df.to_parquet(index=False)

    file_client.upload_data(data=processed_df,overwrite=True, length=len(processed_df))

    file_client.flush_data(len(processed_df))

    return True

参考:https://docs.microsoft.com/en-us/azure/developer/python/tutorial-deploy-serverless-cloud-etl-05

当我单独运行此功能但不适用于转换后的数据框时,此功能在 azure 云上运行良好。

任何人都可以确定问题可能是什么。非常感谢!

【问题讨论】:

  • 我可以知道您遇到的错误是什么吗?

标签: python azure function visual-studio-code serverless


【解决方案1】:

根据错误消息,我们可以确定问题,但是当 Azure 功能在本地正常工作时,它也应该在部署后工作。在少数情况下,在部署我们的函数后,我们会在运行代码时遇到内部服务器错误。

以下是我们可以摆脱它的两种方法。

  • 添加应用程序设置(添加配置下local.settings.json中的所有变量)

  • 如果我们的 Azure 函数正在与任何 Azure 存储服务或 Blob 存储进行交互,我们需要在 CORS 中添加 API 链接,或者您可以尝试添加“*”,表示全部允许)。

请参阅此MS Docs 以添加应用程序设置

【讨论】:

  • 感谢您的回答。通过在需求文件中提供 pandas 的版本解决了该错误。我的数据框有一个 datetime 列,并且 df.to_parquet 在部署在 azure 函数上时无法转换该列。
猜你喜欢
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多