30Mb使用DataLakeStoreFileSystemManagementClient限制上载到Azure DataLake

我在使用时收到错误

_adlsFileSystemClient.FileSystem.Create(_adlsAccountName, destFilePath, stream, overwrite) 

将文件上传到datalake。 超过30Mb的文件出现错误。 它适用于较小的文件。

错误是:

在Microsoft.Azure.Management.DataLake.Store.FileSystemOperations.d__16.MoveNext()—从抛出exception的先前位置的堆栈跟踪结束—在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)at at Microsoft.Azure.Management.DataLake.Store.FileSystemOperationsExtensions.d__23.MoveNext()中的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)—从抛出exception的上一个位置开始的堆栈跟踪结束—在系统中Microsoft.Azure.Management.DataLake.Store.FileSystemOperationsExtensions.Create的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)(IFileSystemOperations操作,String accountName,String directFilePath,在AzureDataFunctions.DataLakeController.CreateFileInDataLake(String destFilePath,Stream stre)中流streamContents,Nullable 1 overwrite, Nullable 1 syncFlag) am,Boolean overwrite)在F:\ GitHub \ ZutoDW \ ADF_ProcessAllFiles \ ADF_ProcessAllFiles \ DataLakeController.cs:第122行

有没有人遇到过这个? 还是观察到类似行为? 我通过将我的文件分成30Mb片段并上传它们来解决这个问题。

然而,从长远来看这是不切实际的,因为原始文件是380Mb,并且可能相当大一些。 从长远来看,我不希望在我的数据池中有10-15个解剖文件。 我想上传为单个文件。

我可以通过门户界面将完全相同的文件上传到datalake。

请尝试使用DataLakeStoreUploader将文件或目录上传到DataLake,更多演示代码请参考github示例 。 我测试了演示,它对我来说正常。 我们可以从nuget获取Microsoft.Azure.Management.DataLake.Store和Microsoft.Azure.Management.DataLake.StoreUploader SDK。 以下是我的详细步骤:

  1. 创建一个C#控制台应用程序
  2. 添加以下代码

      var applicationId = "your application Id"; var secretKey = "secret Key"; var tenantId = "Your tenantId"; var adlsAccountName = "adls account name"; var creds = ApplicationTokenProvider.LoginSilentAsync(tenantId, applicationId, secretKey).Result; var adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(creds); var inputFilePath = @"c:\tom\ForDemoCode.zip"; var targetStreamPath = "/mytempdir/ForDemoCode.zip"; //should be the '/foldername/' not the full path var parameters = new UploadParameters(inputFilePath, targetStreamPath, adlsAccountName, isOverwrite: true,maxSegmentLength: 268435456*2); // the default maxSegmentLength is 256M, we can set by ourself. var frontend = new DataLakeStoreFrontEndAdapter(adlsAccountName, adlsFileSystemClient); var uploader = new DataLakeStoreUploader(parameters, frontend); uploader.Execute(); 
  3. 调试应用程序。

    在此处输入图像描述

  4. 从azure色门户网站查看

在此处输入图像描述

SDK信息请参考packages.config文件

           

它在这里回答。

目前,大小限制为30000000字节。 您可以通过创建初始文件然后追加来解决,两者的流大小都小于限制。