如何在ASA输出中限制blob存储文件大小

时间:2017-10-26 09:26:41

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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字节,则创建新文件或使用现有文件。

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

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;
}