Size: a a a

2020 October 01

DZ

Dmitry Zuev in Moscow Spark
Vladimir Morozov
Всем привет!

мне нужно реализовать следующий флоу:
1) получить сообщения из Kafka топика `raw
2) распарсить их в case class
3) отправить ошибки парсинга в Kafka топик error
4) Сделать reduceByKey для всего что спарсилось
5) Отправить результаты reduce в кафку в токик data
6) commit offset for Kafka topic raw
GOTO (1)


Модель данных (Scala):

sealed trait Message

case class ParsedMessage(...) extends Message
case class ParseError(raw: String, exception: Throwable) extends Message


Я попытался решить проблему двумя способами:
1)Через Spark RDD - не работает потому что после reduceByKey невозможно получить Kafka offset, rdd.asInstanceOf[HasOffsetRanges].offsetRanges падает, потому что после первого же RDD.map{...} из типа RDD теряется связь с кафкой
2)Я попытался прикрутить Structured streaming, в доках обещают что офсеты будут магически комитится самостоятельно, код на Scala:

.f
latMap {
   case raw: RawMessage =>
       implicit val mapperInfo: ProviderKey = ProviderKey(RawMessageParser.name, RawMessageParser.version, 0)

       Try(parse[List[ParsedMessage]](Left(raw.message))) match {
           case Success(msg) =>
               msg
           case Failure(ex) =>
               Seq(ParseError(raw.nxMessage, ex))
       }
}

Но он падает или на компиляции или на запске (зависит от того указывать тип переменной или нет)

foun
d   : org.apache.spark.sql.Dataset[Product with Serializable with Message]
required: org.apache.spark.sql.Dataset[Message]
Note: Product with Serializable with Message <: Message, but class Dataset is invariant in type T.

Ес
ли вопрос не сюда, то подскажите чат где могут теоретически помочь с данным вопросом
Стриминг или батч нужен?
источник

DZ

Dmitry Zuev in Moscow Spark
Идея какая, читаешь это в дф, потом парсишь. Дальше разделяешь через фильтр на хорошие или битые, пишешь куда нужно
источник

DZ

Dmitry Zuev in Moscow Spark
Что касается скалы тут все более менее ок
источник

VM

Vladimir Morozov in Moscow Spark
Dmitry Zuev
Стриминг или батч нужен?
Нужно после парсинга делать reduceByKeyAndWindow
источник

DZ

Dmitry Zuev in Moscow Spark
Vladimir Morozov
Нужно после парсинга делать reduceByKeyAndWindow
Ой вей.  Это стрим, но это не важно
источник

DZ

Dmitry Zuev in Moscow Spark
Vladimir Morozov
Нужно после парсинга делать reduceByKeyAndWindow
Ну вот, собрал хорошие и вари как хочешь
источник

VM

Vladimir Morozov in Moscow Spark
Dmitry Zuev
Идея какая, читаешь это в дф, потом парсишь. Дальше разделяешь через фильтр на хорошие или битые, пишешь куда нужно
Пойду гуглить подробности
источник

DZ

Dmitry Zuev in Moscow Spark
Vladimir Morozov
Пойду гуглить подробности
Ты ж небось акка стримы варил?
источник

VM

Vladimir Morozov in Moscow Spark
Да
источник

DZ

Dmitry Zuev in Moscow Spark
Идея такая же
источник

VM

Vladimir Morozov in Moscow Spark
Там был сплит :)
источник

DZ

Dmitry Zuev in Moscow Spark
Ну вот. Здесь проще, собираешь до определенного стейджа план. Дальше от него два других
источник

DZ

Dmitry Zuev in Moscow Spark
Один где хорошие другой где плохие
источник

PK

Pavel Klemenkov in Moscow Spark
Друзья мои, рассылка со ссылками на зум и YouTube улетела. Если кому-то не дошло, то проверьте спам, у меня туда приземлилось письмо
источник

V

Vladislav Gotsulyak in Moscow Spark
Pavel Klemenkov
Друзья мои, рассылка со ссылками на зум и YouTube улетела. Если кому-то не дошло, то проверьте спам, у меня туда приземлилось письмо
Ок, спасибо!
источник

GP

Grigory Pomadchin in Moscow Spark
Pavel Klemenkov
Друзья мои, рассылка со ссылками на зум и YouTube улетела. Если кому-то не дошло, то проверьте спам, у меня туда приземлилось письмо
а не хочешь утуб сделать достпным для всех?
источник

DZ

Dmitry Zuev in Moscow Spark
В мск после митапа пиво кто будет?
источник

PK

Pavel Klemenkov in Moscow Spark
Grigory Pomadchin
а не хочешь утуб сделать достпным для всех?
Так Ютуб и так доступен для всех
источник

PK

Pavel Klemenkov in Moscow Spark
источник

PK

Pavel Klemenkov in Moscow Spark
Dmitry Zuev
В мск после митапа пиво кто будет?
В spatial chat же )
источник