Azure Blob - 并行上传一个非常大的文件

时间:2018-05-17 04:25:16

标签: java azure azure-storage-blobs

我正在尝试将非常大的文件上传到Azure Blob商店。我在Azure SDK中使用Java。我想以下面的方式做到这一点 -

  1. 将较大的文件拆分为较小的块。
  2. 将所有块并行上传到Azure Blob Store。
  3. 我可以通过编写代码来使用多个线程进行拆分和上传来完成这些任务,但我正在寻找SDK本身提供的功能来完成上述任务。我发现明确执行这些步骤的示例或示例。截至目前,我正在使用以下代码上传 -

    blob.upload(stream, stream.length());
    

    有人可以指出我正确的方向吗?

    更新 -

    在@Gaurav Mantri输入后,我的更新代码看起来像

    BlobRequestOptions blobRequestOptions = new BlobRequestOptions();
    blobRequestOptions.setConcurrentRequestCount(8);
    blobRequestOptions.setSingleBlobPutThresholdInBytes(65000000);
    blob.upload(stream, stream.length(), null, blobRequestOptions ,null);
    

    我正在上传大小为3GB的文件。我仍然不确定文件是否被拆分,因为上传时间没有改善。

1 个答案:

答案 0 :(得分:1)

您应该查看Java SDK中的BlobRequestOptions类。有两种你感兴趣的方法:

  

设置每个操作的并发请求的并发数。该   默认并发请求计数在客户端中设置并且是   默认值为1,表示没有并发。

  

设置用于编写要使用的单个blob的阈值大小。该   默认阈值大小在客户端中设置,默认为32MB。   您可以通过设置此更改此请求的阈值大小   属性。

此属性将执行的操作是,如果它发现您尝试上传的blob的大小大于指定的值,则SDK会自动将该blob拆分为块并上传这些块。