монгу запись такая медленная?
подробности бы не помешали) Какая скорость записи, какой кластер монги? Помимо записи, что-то еще с ней делают? Параметр spark.mongo.write.replaceDocument (могу ошибаться в названии) чему равен? Партиций скок в датафрейме?
Кластер небольшой, 3 ноды по 2 ядра, 8гб памяти. replaceDocument по-умолчанию, 7 партиций. Если _id оставить по-умолчанию генерируемым на стороне монги, то скорость 50-100к/сек. Если _id это одно из уникальных полей датафрейма типа long, то скорость не выше 5к/сек. Кажется, что случай типовой)
На столько сильная деградация выглядит странной. Но вообще 50-100к выглядит менее правдоподобной цифрой, чем 5-10к для такого размера кластера. Попробуй поиграться с кардинальностью _id и числом партиций
Кардинальность _id самая высокая из всех остальных, это же уникальный ключ
выглядит как оверхед на проверку уникальности. если не посылать свой _id монга знает, что алгоритм монотонно дает уникальные id
Да, не исключаю
Перепроверив без спарка обычным bulkWrite, так и есть. Судя по поведению, спарк делает апдейты, предварительно делая чтение из монги.
попробуйте тогда не трогать _id а вместо этого создать свое поле с ключом, повесив на него индекс
доберусь до компа - проверю, но вообще чот странно, не было такого, обычные апдейты там
Это работает хорошо, быстро) Мопед не мой) спрошу у автора зачем делает кастомные _id
логично, т. к. индекс не делает проверку уникальность сам по себе, там global state даже не будет, скорее всего
По-умолчанию duplication index error
скорее всего, чтобы upsert делать
Обсуждают сегодня