Как использовать Flink и Spark вместе, и Spark только для преобразования? - PullRequest
0 голосов
/ 22 октября 2018

Допустим, в mongodb есть коллекция "товаров", подобная этой:

{name:"A",attr:["location":"us"],"eventTime":"2018-01-01"}
{name:"B",attr:["brand":"nike"],"eventTime":"2018-01-01"}

В прошлом я использовал искру, чтобы сгладить ее и сохранить в улье:

goodsDF.select($"name",explode($"attribute"))

Но теперь нам нужно обрабатывать инкрементные данные, например, на следующий день в третьей строке появился новый товар

{name:"A",attr:["location":"us"],"eventTime":"2018-01-01"}
{name:"B",attr:["brand":"nike"],"eventTime":"2018-01-01"}
{name:"C",attr:["location":"uk"],"eventTime":"2018-02-01"}

некоторые из нашей команды считают, что flink лучше при потоковой передаче, потому что flinkимеет приложение драйвера событий, потоковый конвейер и пакет, но spark - это просто микропакет.

, поэтому мы переходим на использование flink, но есть много кода, написанного искрой, например, "взорваться"выше, поэтому мой вопрос: возможно ли использовать flink для извлечения источника и сохранения в приемник, но в середине используйте spark для преобразования набора данных?

Если это невозможно, как насчет сохранить его?во временный приемник, скажем, некоторые файлы json, а затем спарк читает файлы и преобразует и сохраняет в куст. Но я боюсь, что это не имеет смысла, потому что для искры, это также инкрементные данные. Используйте flink, затем используйтеискра такая же, как использовать искруСтруктурированная потоковая передача напрямую.

1 Ответ

0 голосов
/ 22 октября 2018

Нет.Код Apache Spark нельзя использовать во Flink без внесения изменений в код.Так как эти два являются разными средами обработки и API, предоставляемыми двумя, и его синтаксис отличается друг от друга.Выбор фреймворка действительно должен зависеть от варианта использования, а не от общих утверждений, таких как Flink лучше Spark.Фреймворк может отлично работать для вашего варианта использования, а в другом случае он может работать плохо.Кстати, Spark - это не просто микропакет.В нем есть пакет, потоковая передача, график, ML и другие вещи.Поскольку полный вариант использования не упоминается в вопросе, было бы трудно предложить, какой из них лучше для этого сценария.Но если ваш вариант использования может позволить задержку менее секунды, то я бы не стал тратить свое время на переход к другой среде.

Кроме того, если все будет динамично и ожидается, что среда обработки может измениться в будущем, это приведет клучше использовать что-то вроде Apache Beam, который обеспечивает абстракцию над большинством процессоров.Использование API-интерфейсов обработки лучей Apache позволит вам в любой момент изменить базовый обработчик.Вот ссылка, чтобы узнать больше о луче - https://beam.apache.org/.

...