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