2017-04-03 110 views
1

我有很多zip文件,其中包含几个文件夹和50多个文件。如何将这些zip文件上传到azure blob,然后将其解压缩到那里。如何将zip文件上传到azure blob然后解压缩到那里

解压缩服务器中的文件并将其中的文件逐一上传到azure blob将是一个麻烦的过程。

蔚蓝有没有什么简单的方法来实现这一点或有任何解决方法?

我在PHP中实现这个。

+0

叶基本上像亚马逊S3。S3可以让你上传一个zip文件,而不是一个接一个地在网络上上传数百个文件,而是将它提取到它所选择的位置。 1个文件,1个传输。您可以使用Amazon S3存储桶吗? - 我不为亚马逊工作 –

回答

2

简单的答案是Azure Blob Storage不会为您解压缩。这是你需要自己做的事情。你如何去做取决于你。

一种可能性是(像你提到的那样),你上传服务器上的zip文件,解压缩到那里然后上传单个文件。

如果您担心在Web服务器上发生的处理,另一种可能性是通过后台进程解压缩。在这种方法中,您只需将BLU文件上传到BLOB存储中即可。然后通过一些后台进程(可能是WebJobs,Functions,Worker Roles或Virtual Machines),您可以下载这些zip文件,解压缩它们,然后重新上传这些单独的文件。

要按需触发后台进程,一旦上传zip文件,您可以在队列中写一条消息告诉后台进程下载zip文件并开始解压缩过程。

1

AS @Gaurav提到,解压是不是天真的支持。有一个feedback item作为一个功能,但它被拒绝。我可以想到两个可能感兴趣的替代方案。

1)构建一个Azure Data Factory custom activity,进行解压缩。当文件上传到临时位置时,您可以在管道中解压并将其写入应用程序容器。这将需要一个批处理服务实例,但Data Factory将负责所有的编排工作,并为您提供管理工具以提醒失败等。

2)使用adlcopy将您的Blob从Azure Blob存储移动到Azure Data Lake Store。可执行程序。进入Data Lake Storage后,您可以构建自己的custom extractor并查询zip/gzip文件。在仔细查看文档之后,似乎USQL可能能够在本地执行此操作。请从EXTRACT expression中的压缩数据中查找部分

3)将PolyBase与SQL数据仓库结合使用,它可以本地读取zip/gzip文件。这是最简单但可能是最昂贵的选择。请参阅CREATE EXTERNAL TABLECREATE EXTERNAL FILE FORMAT

4)正如@EvertonMc刚才提到的,你可以在触发器上使用Azure函数来实现,这也是一个不错的选择。

祝你好运,让我们知道你是如何得到。