[英]Read CSV From Azure Data lake storage Gen 1 in c# .net API
We need to read a CSV File of around 2 GB which is stored in Azure Data lake storage Gen1 .The purpose is like we have to render the data in Grid format (UI ) with high performance when user request.我们需要读取一个大约2 GB的 CSV 文件,该文件存储在Azure 数据湖存储 Gen1中。目的就像我们必须在用户请求时以高性能的网格格式 (UI) 呈现数据。 We are using .Net Core 2.1 (c#) for doing API for the same.
我们使用.Net Core 2.1 (c#)来做同样的事情 API。
var creds = new ClientCredential(applicationId, clientSecret);
var clientCreds = ApplicationTokenProvider.LoginSilentAsync(tenantId, creds).GetAwaiter().GetResult();
// Create ADLS client object
AdlsClient client = AdlsClient.CreateClient(adlsAccountFQDN, clientCreds);
string fileName = "/cchbc/sources/MVP/Data.csv";
using (var readStream = new StreamReader(client.GetReadStream(fileName)))
{
while ((line = readStream.ReadLine()) != null)
{
content = content + line;
}
}
I have tried the above code but failed with an error GETFILESTATUS failed with HttpStatus:Forbidden RemoteException: AccessControlException GETFILESTATUS failed with error 0x83090aa2 (Forbidden. ACL verification failed. Either the resource does not exist or the user is not authorized to perform the requested operation.)我已经尝试了上面的代码,但失败并出现错误GETFILESTATUS failed with HttpStatus:Forbidden RemoteException: AccessControlException GETFILESTATUS failed with error 0x83090aa2 (Forbidden. ACL 验证失败。资源不存在或用户无权执行请求的操作。 )
Any suggestion will be very beneficial.Thanks in advance任何建议都会非常有益。在此先感谢
If you want to use a service principal to access files storing in Azure data lake gen 1, we need to configure ACL for the service principal.如果要使用服务主体访问存储在 Azure 数据湖 gen 1 中的文件,我们需要为服务主体配置ACL 。 The ACL has three permissions Read(read the contents of a file) Write(write or append to a file) and Execute(traverse the child items of a folder).
ACL 具有三个权限读取(读取文件的内容)写入(写入或 append 到文件)和执行(遍历文件夹的子项)。
for example I access file /test/test.csv例如我访问文件 /test/test.csv
Opreation Object / test/ test.csv
Read tets.csv --X --X R--
string appId = "service principal appId";
string appSecret = "service principal appSecret";
string domain = "service principal domain";
var serviceSettings = ActiveDirectoryServiceSettings.Azure;
serviceSettings.TokenAudience = new Uri(@"https://datalake.azure.net/");
var creds = await ApplicationTokenProvider.LoginSilentAsync(domain, appId, appSecret, serviceSettings);
string accountName = "testadls02";
AdlsClient client = AdlsClient.CreateClient($"{accountName}.azuredatalakestore.net", creds);
string fileName = "/test/test.csv";
string line = null;
using (var readStream = new StreamReader(client.GetReadStream(fileName)))
{
while ((line = await readStream.ReadLineAsync()) != null) {
Console.WriteLine(line);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.