Есть ли способ потоковой передачи результатов в библиотеке Kusto Data .Net?

У нас есть приложение .Net, которое получает огромный набор результатов (более 5 000 000 строк) из Kusto, обрабатывает их в памяти и загружает в 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
    }
}

person Zhiliang    schedule 02.08.2019    source источник


Ответы (1)


  1. Вы можете попробовать указать свойство streaming как часть строки подключения: https://docs.microsoft.com/en-us/azure/kusto/api/connection-strings/kusto#client-communication.-properties
  2. Exporting 5M (raw?) records from Kusto/ADX to CosmosDB - what's the use case? are you running analytics/aggregations over this data in CosmosDB?
    • You could consider performing additional filtering/aggregation in your Kusto query prior to exporting to CosmosDB (again, depending on your use case)
    • Если по какой-либо причине параметр streaming вам не помогает, вы можете «разбить» ваш текущий запрос на несколько (в соответствии с определенным столбцом в данных, например, столбец datetime или ingestion_time(), или используя hash())
person Yoni    schedule 02.08.2019
comment
Спасибо Йони! Это очень полезно! Потоковое = Правда работает! По сути, мы выполняем небольшую агрегацию в Azure Data Explorer для данных телеметрии просмотра страниц, а затем загружаем данные просмотра страниц в Cosmos DB для использования в OLTP. - person Zhiliang; 05.08.2019