во время некоторой академической c работы над инфраструктурой Spark-Kafka, я столкнулся с поведением, которое я не мог понять:
Я поднял StreamingDataFrame, который получает данные из kafka topi c и выполняет агрегацию данных на основе уникального идентификатора. Когда я вычисляю эксцесс, асимметрию и имею в виду, что все в порядке: данные ожидаются как в консольном приемнике, так и при записи их на выход Kafka topi c.
Проблема начинается, когда я пытаюсь count()
на агрегированных данных: консольный приемник все еще в порядке, но приемник kafka выводит неправильные числа на топи c, то есть выдает целые кратные правильного значения .
Я проследил проблему до папок контрольных точек: если я удаляю их до перезапуска процесса сбора данных (данные являются тестовыми данными, поэтому они повторяются через некоторое время), счетчик работает нормально.
Я не мог понять механизм, лежащий в основе ошибочного поведения: не должно ли это повлиять также на асимметрию и эксцесс, или дублирование данных не повлияло бы на них, поскольку это не повлияло бы на среднее значение (повторяющиеся данные не изменяют среднее значение)?
Спасибо за внимание