【问题标题】:How to limit blob storage file size in ASA output如何限制 ASA 输出中的 blob 存储文件大小
【发布时间】:2017-10-26 09:26:41
【问题描述】:

我正在使用一个 Azure 解决方案,其中有一个输出到 ASA 中的 blob 存储。我在这样的文件夹树结构中获取输出文件:yyyy/mm/dd/hh(例如2017/10/26/07)。有时,在该小时过去后,blob 存储中的文件会保存在hour 文件夹中,因此文件可能非常大。有没有办法从 ASA 限制这些文件的大小?

【问题讨论】:

    标签: azure-stream-analytics azure-blob-storage


    【解决方案1】:

    目前无法限制大小,大小限制仅基于 blob 的限制。但是,如果您的路径是 yyyy/mm/dd/hh,ASA 将每小时创建一个新文件夹。请注意,这是基于 System.Timestamp 列,而不是挂钟时间。

    【讨论】:

      【解决方案2】:

      是的,您可以使用以下长度属性限制文件大小并在现有文件大小达到限制后创建新文件。

      namespace Microsoft.Azure.Management.DataLake.Store.Models {
         ...
          // Summary:
          //     Gets the number of bytes in a file.
          [JsonProperty(PropertyName = "length")]
          public long? Length { get; }
          ...
        }
      

      以下是场景示例:

      场景如果文件大小超过 256MB 或 268435456 字节,则创建新文件或使用现有文件。

      创建一个函数并使用该函数确定文件路径,下面是函数的示例代码sn-p。
      代码片段:

      public static async Task<string> GetFilePath(DataLakeStoreClient client, string path) {
         var createNewFile = false;
          ......  
                  if (await client.GetFileSize(returnValue) >= 256 * 1024 * 1024)
                      {
                          returnValue = GetFilePath(path);
                          createNewFile = true;                       
                      }
          ......
      }
      
      public async Task<long?> GetFileSize(string filepath) {
             return (await this._client.FileSystem.GetFileStatusAsync(_connectionString.AccountName, path)).FileStatus.Length;
      }
      

      【讨论】:

      • 以上代码 sn-p 使用 DataLakeStoreClient ,类似我们可以用于 CloudBlobContainer
      猜你喜欢
      • 2020-09-23
      • 2018-11-17
      • 1970-01-01
      • 2011-09-15
      • 2011-01-15
      • 2011-11-01
      • 2012-07-28
      • 1970-01-01
      • 2018-04-28
      相关资源
      最近更新 更多