首页 > 解决方案 > Azure Data Lake HDFS 上传文件大小限制

问题描述

有谁知道通过 Azure HDFS Rest API 上传文件的最大大小是多少?(https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-data-operations-rest-api)。

我发现某处 256MB,某处 32MB,所以想知道。

或者其他 SDK 的类似限制?

标签: restazure-data-lake

解决方案


几个月前我正在努力解决同样的问题,结果发现位于 ADLS 前面的 IIS 将maxAllowedContentLength默认值设置为 30000000 字节(或 28.6Mb)。这实质上意味着每当我们想要推送大于 30Mb 的任何东西时,该请求永远不会到达 ADL,因为 IIS 在此之前会抛出 404.13。参考

正如链接中已经建议的那样,ADLS 有一个带有4-MB 缓冲区的驱动程序,我自己使用的是 .NET SDK,下面的代码对我很有帮助

public async Task AddFile(byte[] content, string path)
{
        const int fourMb = 4 * 1024 * 1024;
        var buffer = new byte[fourMb];
        using (var stream = new MemoryStream(content))
        {
            if (!_adlsFileSystemClient.FileSystem.PathExists(_account, path))
            {
                _adlsFileSystemClient.FileSystem.Create(_account, path);
            }

            int bytesToRead;
            while ((bytesToRead = stream.Read(buffer, 0, buffer.Length)) > 0)
            {
                if (bytesToRead < fourMb)
                {
                    Array.Resize(ref buffer, bytesToRead);
                }
                using (var s = new MemoryStream(buffer))
                {
                    await _adlsFileSystemClient.FileSystem.AppendAsync(_account, path, s);
                }
                //skipped for brevity

推荐阅读