使用UploadFile上传超4MB文件至Azure Data Lake Store报错求助
解决Azure Data Lake Store大文件上传的记录长度超限问题
我来帮你搞定这个问题——这个TransferFailedException错误不是Azure Data Lake Store服务端的强制设置问题,完全可以通过客户端SDK的配置调整来解决。
你遇到的问题根源在于你使用的2.0.0.0版本SDK中,UploadFile方法的默认上传分块/缓冲区大小设置。当文件超过4MB时,单次上传的块大小触发了服务端的单块长度限制(这里的"record"其实对应上传的分块)。
具体解决办法
你有两个可行的调整方向:
手动指定分块大小
改用带TransferParameters参数的UploadFile重载,自定义一个小于4MB的分块大小(比如2MB),示例代码如下:var transferParams = new TransferParameters(store, filePath, key, overwrite: true) { ChunkSize = 2 * 1024 * 1024 // 设置为2MB,可根据实际情况微调 }; DataLakeStoreFileSystemManagementClient.FileSystem.UploadFile(transferParams);这样拆分后每个上传块都在服务端允许的范围内,就不会触发错误了。
升级SDK版本(推荐)
你当前用的2.0.0.0版本是比较早期的SDK,后续版本的Microsoft.Azure.Management.DataLake.Store已经优化了上传逻辑,默认分块设置更合理,也修复了这类边界问题。升级到最新稳定版后,默认的UploadFile方法就能自动处理大文件的分块上传,不用手动调整参数。
补充说明
你说谷歌搜索只找到Java示例,是因为Java SDK遇到类似问题的解决思路和.NET一致——都是调整分块大小或者升级SDK,只是语法不同而已。
内容的提问来源于stack exchange,提问作者jn1kk
相关产品推荐
相关产品推荐

