#c# #azure #azure-blob-storage #azure-data-lake
Вопрос:
Здравствуйте уважаемые разработчики,
Я столкнулся с проблемой, из-за которой я не могу прочитать/получить доступ к своему файлу blob-объектов в своей учетной записи хранения Azure. Я использую C# в качестве языка программирования. В конце концов, я хочу прочитать свой файл blob-объектов, чтобы найти определенное значение и проверить, верно ли оно. Заранее спасибо
Вот как выглядит мой код.
//Get a reference to the edc(1.3) container
string containerName = "edc/rchexport/rch-bu-party-dd/1.3";
string connectionString = "DefaultEndpointsProtocol=https;AccountName=adlse3.....";
Log.Information($"C# Timer trigger function executed at: {DateTime.Now}");
BlobContainerClient blobContainerClient = new BlobContainerClient(connectionString, containerName);
//Acces to parquet blob file. Getting the sample structure of the blob to create the final table.
string edcRchBuParty = "rchtestdata.parquet";
BlobClient st5BobClient = blobContainerClient.GetBlobClient(edcRchBuParty);
var sampleStream = st5BobClient.OpenRead(); **<<<<<<<<< This where the error pops up**.
var sampleReader = new ParquetReader(sampleStream);
Table sampleTable = sampleReader.ReadAsTable();
DataField[] datafields = sampleTable.Schema.GetDataFields();
Table finalTable = new Table(datafields);
//looping through the container for getting the blobs and read the file and add the rows to the final table
await foreach (BlobItem blobItem in blobContainerClient.GetBlobsAsync())
{
if (blobItem.Name.Contains("15b0251556c74fd693ca1f3cb4ce4d6e")) //for testing
{
Log.Information("t" blobItem.Name);
BlobClient blobClient = blobContainerClient.GetBlobClient(blobItem.Name);
var stream = blobClient.OpenRead();
var reader = new ParquetReader(stream);
Table table = reader.ReadAsTable();
Console.WriteLine("Step 3 : Check");
foreach (Row row in table)
{
finalTable.Add(row);
}
Log.Information(finalTable.Count.ToString());
}
Ответ №1:
Проблема в том, как вы указываете имя контейнера.
Глядя на ваш код, я предполагаю, что ваше имя контейнера edc
и ваш blob ( rchtestdata.parquet
) присутствует в иерархии папок, например rchexport/rch-bu-party-dd/1.3
.
Если это так, то, пожалуйста, измените следующую строку кода:
string containerName = "edc/rchexport/rch-bu-party-dd/1.3";
Для
string containerName = "edc";
и измените следующую строку кода:
string edcRchBuParty = "rchtestdata.parquet";
Для
string edcRchBuParty = "rchexport/rch-bu-party-dd/1.3/rchtestdata.parquet";
Тогда вы не должны получать эту ошибку.