【问题标题】:Intermittent errors using C# Azure Datalake Gen1 Client "The underlying connection was closed"使用 C# Azure Datalake Gen1 客户端的间歇性错误“底层连接已关闭”
【发布时间】:2019-09-16 10:03:55
【问题描述】:

我正在使用 Microsoft.Azure.DataLake.Store 驱动程序将一些数据记录到 Gen1 Azure Datalake Store。

我正在像这样验证和创建客户端:

var adlCreds = await ApplicationTokenProvider.LoginSilentAsync(tenant, clientId, secret);
var adlClient = AdlsClient.CreateClient(dlUrl, adlCreds);

然后像这样使用ConcurrentAppendAsync 写入文件(文件名只是一个例子):

var textBytes = Encoding.UTF8.GetBytes(appendText);
await client.ConcurrentAppendAsync("test/myFile.json", true, textBytes, 0, textBytes.Length);

这在大多数情况下都有效,但是我看到记录了错误的间歇性错误:

CONCURRENTAPPEND 失败,出现未知错误:底层 连接已关闭:预期保持活动的连接 已被服务器关闭。

当这种情况发生时,并发追加失败并且数据不会被保存。

正在运行的服务在 .NET Framework 4.6.1 上。我正在缓存和重用凭据对象(30 分钟)和 as far as I can tell is OK 的 AdlsClient(5 分钟),所以我不确定问题是什么。

【问题讨论】:

  • “我正在缓存和重用凭据对象(30 分钟)和 AdlsClient(5 分钟)”是什么意思?

标签: c# .net azure azure-data-lake


【解决方案1】:

其中一个问题可能是由于在同一文件流上使用了“Create”和“ConcurrentAppend”。 ADLS 文档提到它们不能用于同一个文件。如果您同时使用它们,也许可以尝试将“Create”命令更改为“ConcurrentAppend”,因为后者可用于创建不存在的文件。

【讨论】:

  • 我没有使用 Create 命令,我让 ConcurrentAppend 根据需要创建文件。唯一命中我的数据湖的命令是 ConcurrentAppend
猜你喜欢
  • 2011-04-10
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 2020-11-09
相关资源
最近更新 更多