ADLS ConcurrentAppend为1 MB文件提供损坏的数据

问题描述 投票:0回答:1

[当我使用Parallel.For循环将10个1 MB大小的文件同时添加到Azure Data Lake Service时,尽管我看到正确的数据已打印到控制台,但我只能看到Azure Data Lake文件中最后两个文件的内容。 。

[当我使用简单的for循环而不是此Parallel.For时,将数据追加到文件是正确的。

有帮助吗?

Parallel.For(0, 10, i =>
{
    path[i] = @"C:\Users\t-chkum\Desktop\InputFiles\1MB\" + (i + 1) + ".txt";

    FileStream stream = File.OpenRead(path[i]);

    stream.Read(buffer, 0, buffer.Length);
    Console.WriteLine(Encoding.UTF8.GetString(buffer));


    client.ConcurrentAppend(fileName, true, buffer, 0, buffer.Length);

    stream.Close();
});
c# concurrency task-parallel-library azure-data-lake parallel-for
1个回答
0
投票

这实际上是一个关键的节问题,可以使用块集合或锁定来解决:

© www.soinside.com 2019 - 2024. All rights reserved.