如何使用c#从Kusto数据库表中读取大量行



我用的是Kusto。数据方法,用于创建查询客户端对象并从Kusto集群上的数据库读取表。然而,我无法读取大没有行(当以百万计)。在这种情况下,Ireader对象抛出异常:*

Kusto.Data.Exceptions。KustoServicePartialQueryFailureException:"查询执行已超过允许的限制(80DA0003):结果这个查询超过了64 MB的设置限制,所以不是所有的记录都是return (E_QUERY_RESULT_SET_TOO_LARGE, 0x80DA0003).

文档说:

当Streaming标志被启用时(默认情况下),SDK会这样做不缓冲所有的响应数据在内存中;相反,它会"拉动"。的数据在调用者请求时从服务获取。因此,它是在这种情况下,调用者正确地处理数据是至关重要的(如IDataReader),一旦它完成读取数据,作为网络与服务的连接不必要地保持打开状态。

如果数据在读取时被拉出,为什么我的内存超过。另外,如果有其他阅读方式,请分享

如文档所述:

查询结果集已超过内部…极限是一种部分查询失败,当查询的结果有超过两个限制之一:

  • 记录数限制(记录数限制,默认为500,000条)
  • 数据总量限制(数据大小限制,默认设置为67,108,864 (64MB))

添加OptionNoTruncation到你的代码

clientRequestProperties.SetOption(Kusto.Data.Common.ClientRequestProperties.OptionNoTruncation, true);

(或者您可以使用OptionTruncationMaxSize)和/或OptionTruncationMaxRecords)

最新更新