Size: a a a

2018 May 22

D

Daniil in Moscow Spark
Проще писать в базу
источник

D

Daniil in Moscow Spark
Кассандра идеально подходит , благо есть коннектор
источник

GP

Grigory Pomadchin in Moscow Spark
ничего на самом деле, но большая устойчивость будет точно; и проще логика
источник

D

Daniil in Moscow Spark
Ломается хз почему, у меня тупо не делались новые пулы
источник

GP

Grigory Pomadchin in Moscow Spark
у меня ниразу не ломалось на самом деле
источник

D

Daniil in Moscow Spark
Grigory Pomadchin
у меня ниразу не ломалось на самом деле
У нас Кафка очищает лог
источник

GP

Grigory Pomadchin in Moscow Spark
источник

D

Daniil in Moscow Spark
А стратегия reset не работает потому что они ее переопределять в none
источник

D

Daniil in Moscow Spark
Ну не можем мы все данные хранить
источник

D

Daniil in Moscow Spark
Я знаю , но все равно хранить в Кассандре удобней , давно хочу фичу запилить с пересчетами, когда оффсеты отматываешь
источник

D

Daniil in Moscow Spark
Ещё момент есть - я руками версию клиента Кафки переопределял до 0.10.1.2
источник

GP

Grigory Pomadchin in Moscow Spark
а зачем?
источник

GP

Grigory Pomadchin in Moscow Spark
какойто баг / фича апи?
источник

D

Daniil in Moscow Spark
Grigory Pomadchin
какойто баг / фича апи?
источник

GP

Grigory Pomadchin in Moscow Spark
спасибо
источник

K

KrivdaTheTriewe in Moscow Spark
Daniil
Я знаю , но все равно хранить в Кассандре удобней , давно хочу фичу запилить с пересчетами, когда оффсеты отматываешь
на постгре делали
источник

AV

Artyom Vybornov in Moscow Spark
О моя любимая тема, поэтому немного ворвусь.

1) Поддерживает, ввиду обратной совместимости на уровне Kafka.
Также стоит отметить, что всех стимулируют переходить на Spark Structured Streaming и поддержка Spark Streaming будет все хуже. По аналогии с тем, как в том же Spark Streaming стимулировали всех писать на Scala/Java, поэтому python версия намного меньше умеет.

2) Нет. Чтобы обеспечить exactly once нужен атомарный комит отступов и данных, а это каждый костылит по своему.

3) Проблема не в тормознутости, а в невозможности обеспечить exactly once. При хранении отступов в Kafka максимально можно получить at least once. А при auto-commit вообще никакая семантика не будет соблюдаться.
источник

AV

Artyom Vybornov in Moscow Spark
1) Я не особо писал под structured streaming, поэтому не скажу. Просто знаю что больше развивать классический spark streaming особо не будут, соответственно update коннекторов тоже особо не стоит дожидаться.

3) Там два варианта:
a) auto-commit (никакой семантики) - kafka переодически посылает heartbeat к consumer'у и если он жив сохраняет уже прочитанные им данные. Собственно легко придумать проблемные ситуации:
раз) Kafka обновит отступ, а consumer не успеет обработать сообщение - получаем потери данных
два) Сonsumer сообщение сохранил и умер, поэтому Kafka новый отступ не сохранит - при следующем фетче заберем те же самые строки и будут дубли
б) manual commit (я не помню как точно он называется, но семантика at least once) - после успешной обработки батча данных consumer посылает в Kafka ack, что все хорошо (после этого Kafka сохранит отступ соответсвующий обработанному батчу). Ну и проблемная ситуация: consumer данные или часть данных сохранил и упал => при следующем фетче снова будем вычитывать те же данные, итого дубли.
источник

AV

Artyom Vybornov in Moscow Spark
Spark structured streaming, да довольно свежий и активно развивающийся проект, поэтому багов будет куча. Но он архитектурно намного более грамотно построен и его активно развивают.

Имхо, если писать что-то новое, то Spark Structured Streaming точно выигрывает.

Из минусов стоит отметить, что он не поддерживает exactly once для пособытийной обработки (но с микробатчевой всё в целом прилично).
источник

AV

Artyom Vybornov in Moscow Spark
Это да, но к справедливости стоит отметить, что не всегда идемпотентность можно обеспечить и иногда это пипец как дорого вычислительно (к примеру, целевая структура данных большая и сложная или дублей больно много).
источник