Какова цель ForeachWriter в структурированной потоковой передаче Spark? - PullRequest
0 голосов
/ 29 декабря 2018

Может кто-нибудь объяснить, зачем нужен foreach writer для структурированной потоковой передачи?

Поскольку мы получаем все исходные данные в виде dataFrame, я не использую foreachwriter.

1 Ответ

0 голосов
/ 29 декабря 2018

DataFrame - это абстрактная концепция Spark, которая напрямую не отображается в формате, который может использоваться, например, записывается в консоль или базу данных.

Создав ForeachWriter, вы берете строки (или пакеты) DataFrame и определяете, как open() система назначения, в которую вы хотите записать, как process() это событиезатем наконец close() открытые ресурсы.

Используя в качестве примера базу данных JDBC, вы установите сеанс базы данных в open() и, возможно, определите PreparedStatement, который сопоставляется с данными, которые вы хотите добавить, затем вы можете process() некоторый универсальный типT для выполнения любых действий, которые вы хотите, привязать некоторые поля к выражению.И, наконец, когда вы закончите, вы закроете соединение с базой данных.

В случае записи в консоль на самом деле открывать или закрывать нечего, но вам нужно toString каждое поле DataFrame, а затем распечатать его


Я полагаю, что варианты использования хорошо изложены в документации , и в основном говорится, что для любой системы, которая не предлагает writeStream.format("x") способ записи данных, вам необходимо реализоватьэтот класс самостоятельно, чтобы получить данные в ваших последующих системах.

Или, если вам нужно выполнить запись в несколько адресатов, вы можете кэшировать Dataframe перед записью обоих местоположений, так что dataframe не нужно пересчитывать, что приведет к несогласованности данных между вашими адресатами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...