有没有办法在 Kusto Data .Net 库中流式传输结果?
Is there a way to stream results in Kusto Data .Net library?
我们有一个 .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
}
}
- 您可能想尝试将
streaming
属性 指定为连接字符串的一部分:https://docs.microsoft.com/en-us/azure/kusto/api/connection-strings/kusto#client-communication-properties
- 将 5M(原始?)记录从 Kusto/ADX 导出到 CosmosDB - 用例是什么?您 运行 analytics/aggregations 正在处理 CosmosDB 中的这些数据吗?
- 您可以考虑在导出到 CosmosDB 之前在 Kusto 查询中执行额外的 filtering/aggregation(同样,取决于您的用例)
- 如果出于某种原因,
streaming
选项对您没有帮助,您可以 'split' 将您当前的单个查询分为多个查询(根据数据中的特定列,例如datetime
列,或 ingestion_time()
,或使用 hash()
)
我们有一个 .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
}
}
- 您可能想尝试将
streaming
属性 指定为连接字符串的一部分:https://docs.microsoft.com/en-us/azure/kusto/api/connection-strings/kusto#client-communication-properties - 将 5M(原始?)记录从 Kusto/ADX 导出到 CosmosDB - 用例是什么?您 运行 analytics/aggregations 正在处理 CosmosDB 中的这些数据吗?
- 您可以考虑在导出到 CosmosDB 之前在 Kusto 查询中执行额外的 filtering/aggregation(同样,取决于您的用例)
- 如果出于某种原因,
streaming
选项对您没有帮助,您可以 'split' 将您当前的单个查询分为多个查询(根据数据中的特定列,例如datetime
列,或ingestion_time()
,或使用hash()
)