#apache-spark #cassandra #spark-cassandra-connector
#apache-spark #кассандра #искра-кассандра-коннектор
Вопрос:
у нас разные размеры результирующего набора в зависимости от использования directJoin в нашем кластере spark cassandra:
//newpos — это фрейм данных, загруженный из cassandra
val with_direct_join = new_pos.join(
right
.directJoin(AlwaysOn)
,
Seq("a", "b", "c"),
"left"
println(«(Прямое соединение): %d».формат (с_direct_join.count)); //12006 строк
тот же фрейм данных и соединение с directJoin (AlwayOff) имеют результирующий набор из //14705 строк
Есть идеи, почему это происходит? Directjoin в сочетании с левым соединением, похоже, каким-то образом ограничивает строки.
Спасибо, Фло
Комментарии:
1. сколько узлов в кластере C *, вы регулярно выполняете ремонт?
2. спасибо, Алекс, ты быстрый 🙂 На самом деле 3 узла, ремонт — насколько я знаю — установлен по умолчанию, что означает отсутствие ремонта, верно? , нужно спросить администратора C * сегодня, но это ведет меня в направлении, которого я не ожидал. Будет ли устаревшая реплика вести себя иначе в ситуации directjoin?
3. По умолчанию ремонт не выполняется… Прямое соединение просто выполняет запросы к отдельным разделам / первичным ключам и может также попадать в не восстановленные реплики, а поскольку по умолчанию используется LOCAL_ONE , вы можете получить устаревшие данные. Вы можете попытаться запустить свое приложение
--conf spark.cassandra.input.consistency.level=ALL
и повторить попытку — если у вас есть какие-либо несоответствия, оно будет исправлено во время чтения, хотя задание может завершиться неудачно из-за задержек с восстановлением данных4. спасибо, Алекс, я свяжусь с администратором и разработчиками и дам вам знать