首页 > 解决方案 > 使用 7zip 在 Azure Functions App 中解压缩文件

问题描述

是否可以使用 Azure 数据工厂或 Functions App 从 .tar.gz 中提取文件以供 ADF 中的 ETL 进程摄取?

我尝试在 Functions Apps 中使用 7zip,它可以很好地提取上传到 Functions App 本身的测试 .tar.gz 文件,但对于存储在 Blob 容器中的文件会引发错误。

这是我在函数 run.ps1 中的命令

.\7za.exe x 1.tar.gz

#below,该文件是 Blob Container 中的一个 blob - 不起作用

.\7za.exe x $InputBlob

我收到的上述命令的错误

2020-09-11T16:06:42.721 [错误] 错误:程序“7za.exe”无法运行:仅在重定向标准输出时支持标准输出编码。在 D:\home\site\wwwroot\tools\run.ps1: 9 char:1+ .\7za.exe e $InputBlob+ ~~~~~~~~~~~~~~~~~~~~~~.Exception :Type : System.Management.Automation.ApplicationFailedExceptionErrorRecord :Exception :类型:System.Management.Automation.ParentContainsErrorRecordExceptionMessage:程序“7za.exe”无法运行:仅在重定向标准输出时支持 StandardOutputEncoding。在 D:\home\site\wwwroot\tools\run.ps1:9 char:1 + .\7za.exe e $InputBlob+ ~~~~~~~~~~~~~~~~~~~~~~.HResult : -2146233087CategoryInfo : ResourceUnavailable: (:) [], ParentContainsErrorRecordExceptionFullyQualifiedErrorId : NativeCommandFailedInvocationInfo :ScriptLineNumber :9OffsetInLine:1HistoryId:-1ScriptName:D:\home\site\wwwroot\tools\run.ps1Line : .\7za.exe e $InputBlobPositionMessage : 在 D:\home\site\wwwroot\tools\run.ps1:9 char:1+ .\7za.exe e $InputBlob+ ~~~~~~~~~~~~~~~~~~~~~~PSScriptRoot : D:\home\site\wwwroot\toolsPSCommandPath

标签: azure-data-factoryazure-function-app

解决方案


不幸的是,Azure 数据工厂中没有现成的功能来从 TAR 文件中提取内容。

这是一个现有的用户语音功能请求线程,我鼓励您对功能请求建议进行投票和/或评论,以提高功能实施的优先级。

https://feedback.azure.com/forums/270578-data-factory/suggestions/34575520-support-extracting-contents-from-tar-file

但作为一种解决方法,您可以尝试使用 Azure 数据工厂的可扩展性功能来转换不受支持的文件。两个选项包括 Azure Functions 和使用 Azure Batch 的自定义任务(ADF 中的自定义活动)。

您的问题已经在微软问答平台上得到解答。


推荐阅读