Zipファイルがたくさんあり、フォルダが少なく、50以上のファイルが含まれています。これらのZipファイルをAzureBLOBにアップロードし、そこで解凍するにはどうすればよいですか。
サーバー内のファイルを解凍し、その中のファイルを1つずつAzure BLOBにアップロードすると、面倒なプロセスになります。
Azureにはこれを実現する簡単な方法はありますか、または回避策はありますか?
私はこれをPHPで実装しています。
簡単な答えは、Azure Blob Storageは解凍を行わないということです。これはあなたが自分でする必要があることです。どのようにするかはあなた次第です。
1つの可能性は、(おっしゃるように)サーバーにZipファイルをアップロードし、そこで解凍してから、個々のファイルをアップロードすることです。
別の可能性は、Webサーバーで発生する処理が心配な場合は、バックグラウンドプロセスを介してこれを解凍することです。このアプローチでは、Zipファイルをblobストレージにアップロードするだけです。次に、いくつかのバックグラウンドプロセス(Webジョブ、関数、ワーカーロール、仮想マシンなど)を使用して、これらのZipファイルをダウンロードし、解凍してから、これらの個々のファイルを再アップロードします。
バックグラウンドプロセスをオンデマンドでトリガーするには、Zipファイルがアップロードされたら、キューにメッセージを書き込んで、バックグラウンドプロセスにZipファイルをダウンロードして解凍プロセスを開始するように指示します。
あなたがたぶん。すでにインターネット上で見つかっているため、ストレージサーバー内でワークロードを実行することはできません...しかし: Azure関数をストレージアカウントのFileWatchに と記述し、ファイルを解凍してからアップロードすることができますそれら
@Gauravが言及しているように、解凍は素朴にサポートされていません。これを機能として含める フィードバック項目 がありましたが、拒否されました。私は興味があるかもしれない2つの選択肢を考えることができます。
1)Azure Data Factoryを構築します カスタムアクティビティ 解凍を行います。ファイルが一時的な場所にアップロードされると、パイプラインで解凍してアプリケーションコンテナに書き込むことができます。これにはバッチサービスインスタンスが必要ですが、Data Factoryがすべてのオーケストレーションを処理し、障害などを警告するための管理機能を提供します。
2)adlcopy.exeを使用して、BLOBをAzure BlobStorageからAzureData LakeStoreに移動します。 Data Lake Storageに入ると、独自の カスタムエクストラクタ を作成し、Zip/gzipファイルをクエリできます。ドキュメントをもう一度調べてみると、USQLがこれをネイティブに実行できる可能性があるようです。 EXTRACT式 のセクションExtract from from the dataを探します。
3)Zip/gzipファイルをネイティブに読み取ることができるSQLデータウェアハウスでPolyBaseを使用します。これは最も簡単ですが、おそらく最も高価なオプションです。 CREATE EXTERNAL TABLE および CREATE EXTERNAL FILE FORMAT を参照してください。
4)そして、@ EvertonMcが今述べたように、トリガーでAzure関数を使用してそれを行うこともできます。これも良いオプションです。
頑張って、どうやって乗るか教えてください。