rest - 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 的类似限制?
解决方案
几个月前我正在努力解决同样的问题,结果发现位于 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
推荐阅读
- r - GG plot 图例堆叠所有形状/从图例中删除一项
- android - 在模块中发现多个重复类
- reactjs - 在 Netlify 中为 React 应用添加 ENV var 的问题
- java - 在android studio中创建新项目ssl peer时错误关闭
- ionic-framework - 身份验证 + Ionic + Firestore + Guard (canActivate) - 访问权限
- java - 无法登录到我的服务器。不是任何人都可以
- angular - 如何在 Angular 项目或库的开发中管理 npm 包的人工制品版本控制?
- sql - 使用 DATEDIFF 的 COUNT 函数计数不正确
- google-sheets - 谷歌表格查询奇怪的行为
- python - 叶包未安装