В настоящее время я вставляю данные в кэш восжинателя с использованием тонкого клиента C ++. < /p>
Настройка Ignite состоит из одного локального узла Ignite и 4 вычислительных двигателей (на основе C ++ с идентичным кодом)
. job
[*] Расчеты запуска
[*] Вставьте сгенерированные результаты обратно в кэш воспламенения
Каждый раз, когда получаются результаты, у нас в общей сложности для 1250000 ROW (значения) для обоснования. />
Я использую API клавиш-значения и, в частности, putall () для вставки результатов. Я вставляю данные в партиях 2500, поэтому Ignite не ошеломлен. - Job 1: Time taken to write results to Ignite: 71 seconds.
- Job 2: Time taken to write results to Ignite: 88 seconds
- Job 3: 139 seconds
- Job 4: 205 seconds
.........
- Job 27: 1622 seconds
- Job 28: 1654 seconds
...........
- Job 46: 2445 seconds
- Job 47: 2728 seconds
- Job 48: 3247 seconds
- Job 49: 2480 seconds
< /code>
Каждый двигатель в конечном итоге должен обрабатывать около 700 заданий. Я использую неэффективные структуры или неэффективно вставляю записи? Первоначально, когда для выполнения вставки требуется около 2 минут, я не могу понять, почему время экспоненциально увеличивается для последующих заданий. < /P>
Я изначально использовал языковые вставки запросов SQL, которые я позже изменил на API-значения с ключе C ++ Тонкий клиент.
0.0.0.0:47500..47509
< /code>
Пример кода (только для ссылки не компилируется): < /p>
const size_t BATCH_SIZE = 2500;
const int NUM_THREADS = 2;
const int maxRetries = 3;
const std::chrono::milliseconds retryDelay(1000);
if (analytic_name == "MYANALYTIC") {
std::map batch;
for (size_t i = startIdx; i < endIdx; ++i) {
const auto& v = allData;
if (v.size() < 13) continue;
std::string uniqueId = groupId + "_" + std::to_string(i);
ResultKey key(uniqueId, v[0]);
ResultValue val(v[1], v[2], std::stod(v[3]), std::stod(v[4]),
v[5], std::stod(v[6]), v[7], std::stod(v[8]),
v[9], std::stod(v[10]), v[11], v[12]);
batch[key] = val;
if (++rowsWritten % BATCH_SIZE == 0) {
for (int attempt = 0; attempt < maxRetries; ++attempt) {
try {
myCache.PutAll(batch);
batch.clear();
break;
} catch (...) {
std::this_thread::sleep_for(retryDelay);
}
}
}
}
if (!batch.empty()) {
for (int attempt = 0; attempt < maxRetries; ++attempt) {
try {
myCache.PutAll(batch);
break;
} catch (...) {
std::this_thread::sleep_for(retryDelay);
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ing-putall
Apache Ignite 2.17 - переживание медленных записей с использованием putall () ⇐ C++
Программы на C++. Форум разработчиков
1752848274
Anonymous
В настоящее время я вставляю данные в кэш восжинателя с использованием тонкого клиента C ++. < /p>
Настройка Ignite состоит из одного локального узла Ignite и 4 вычислительных двигателей (на основе C ++ с идентичным кодом)
. job
[*] Расчеты запуска
[*] Вставьте сгенерированные результаты обратно в кэш воспламенения
Каждый раз, когда получаются результаты, у нас в общей сложности для 1250000 ROW (значения) для обоснования. />
Я использую API клавиш-значения и, в частности, putall () для вставки результатов. Я вставляю данные в партиях 2500, поэтому Ignite не ошеломлен. - Job 1: Time taken to write results to Ignite: 71 seconds.
- Job 2: Time taken to write results to Ignite: 88 seconds
- Job 3: 139 seconds
- Job 4: 205 seconds
.........
- Job 27: 1622 seconds
- Job 28: 1654 seconds
...........
- Job 46: 2445 seconds
- Job 47: 2728 seconds
- Job 48: 3247 seconds
- Job 49: 2480 seconds
< /code>
Каждый двигатель в конечном итоге должен обрабатывать около 700 заданий. Я использую неэффективные структуры или неэффективно вставляю записи? Первоначально, когда для выполнения вставки требуется около 2 минут, я не могу понять, почему время экспоненциально увеличивается для последующих заданий. < /P>
Я изначально использовал языковые вставки запросов SQL, которые я позже изменил на API-значения с ключе C ++ Тонкий клиент.
0.0.0.0:47500..47509
< /code>
Пример кода (только для ссылки не компилируется): < /p>
const size_t BATCH_SIZE = 2500;
const int NUM_THREADS = 2;
const int maxRetries = 3;
const std::chrono::milliseconds retryDelay(1000);
if (analytic_name == "MYANALYTIC") {
std::map batch;
for (size_t i = startIdx; i < endIdx; ++i) {
const auto& v = allData[i];
if (v.size() < 13) continue;
std::string uniqueId = groupId + "_" + std::to_string(i);
ResultKey key(uniqueId, v[0]);
ResultValue val(v[1], v[2], std::stod(v[3]), std::stod(v[4]),
v[5], std::stod(v[6]), v[7], std::stod(v[8]),
v[9], std::stod(v[10]), v[11], v[12]);
batch[key] = val;
if (++rowsWritten % BATCH_SIZE == 0) {
for (int attempt = 0; attempt < maxRetries; ++attempt) {
try {
myCache.PutAll(batch);
batch.clear();
break;
} catch (...) {
std::this_thread::sleep_for(retryDelay);
}
}
}
}
if (!batch.empty()) {
for (int attempt = 0; attempt < maxRetries; ++attempt) {
try {
myCache.PutAll(batch);
break;
} catch (...) {
std::this_thread::sleep_for(retryDelay);
}
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79706309/apache-ignite-2-17-experiencing-slow-writes-using-putall[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия