有没有一种方法可以在Kusto Data .Net库中传输结果?

时间:2019-08-02 07:13:53

标签: .net kusto

我们有一个.Net应用程序,它从Kusto获取巨大的结果集(超过5,000,000行),在内存中进行处理,并将其加载到Azure Cosmos DB中。

我们正在使用IDataReader来避免将所有数据同时加载到内存中。 但是,我们发现在从IDataReader读取第一条记录之前,所有结果都已加载到内存中。 有没有一种方法可以对结果数据集进行真正的流传输?

using (ICslQueryProviderclient = KustoClientFactory.CreateCslQueryProvider(connectionString))
{
    string query = @;
    client.ExecuteQuery("PageViewEvents | // some aggregation logic...", new ClientRequestProperties());
    // At this point, all results have already been loaded to memory. That takes 2GB memory!
    while (reader.Read())
    {
        // Load current record to Azure Cosmos DB
    }
}

1 个答案:

答案 0 :(得分:1)

  1. 您可能要尝试指定//Template <div class="an-input"> <input [type]="type" [id]="id" [name]="name" (focus)="inputFocus($event)" (blur)="inputBlur($event)" (input)="userTyping($event)" class="an-input-el" /> <label [for]="id"> {{label}} </label> </div> //Styles .an-input{ display: inline-block; position: relative; width: 100%; margin-bottom: 30px; & input, & textarea{ padding: 15px; color: $an-color; border: none; outline: none; border: 2px solid $font-darker; border-radius: 2px; width: 100%; &.input-fly{ border-color: $an-color; } &.input-fly-error{ border-color: maroon; } } & label{ position: absolute; left: 0; padding: 0 10px; font-size: 13px; transition: .1s; cursor: text; color: $font-darker; font-size: 11px; &.label-fly{ padding: 0px; color: $an-color; } } }属性作为连接字符串的一部分:https://docs.microsoft.com/en-us/azure/kusto/api/connection-strings/kusto#client-communication-properties
  2. 将5M(原始?)记录从Kusto / ADX导出到CosmosDB-用例是什么?您是否正在CosmosDB中对此数据运行分析/聚合?
    • 您可以考虑在导出到CosmosDB之前在Kusto查询中执行其他过滤/聚合(同样取决于您的用例)
    • 如果出于某种原因streaming选项无济于事,您可以将当前单个查询“拆分”为多个查询(根据数据中的特定列,例如{{1 }}列或streaming,或使用datetime