Максимальный размер загружаемого файла HDFS Azure Data Lake - PullRequest
0 голосов
/ 10 января 2019

Кто-нибудь знает, каков максимальный размер файла для загрузки через Azure HDFS Rest API? (https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-data-operations-rest-api).

Я нашел где-то 256 МБ, где-то 32 МБ, так что интересно.

Или аналогичные ограничения для других SDK?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Я боролся с той же проблемой несколько месяцев назад, и оказалось, что IIS перед ADLS устанавливает maxAllowedContentLength со значением по умолчанию 30000000 байт (или 28,6 МБ). По сути, это означает, что всякий раз, когда мы хотим выдвинуть что-то большее, чем 30 МБ, этот запрос никогда не достигает ADL, поскольку IIS выдает 404,13 до этого. Ссылки .

Как уже предлагалось в ссылках, в ADLS есть драйвер с 4-МБ буфером , я использую .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
0 голосов
/ 02 февраля 2019

В моих тестах я обнаружил ограничение максимального размера файла где-то между 28 МБ и 30 МБ.

При использовании API REST хранилища озера данных Azure у меня не возникло проблем при создании файлов размером до 28 МБ. Однако, когда я пытаюсь создать файл размером 30 МБ, я получаю сообщение об ошибке 404. Not Found.

Следующие ссылки соответствуют предельному размеру файла и ошибке 404, которую я наблюдаю. Ссылки касаются SDK, но, возможно, SDK также вызывает REST API под прикрытием. Мои тесты напрямую вызывают REST API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...