Обходной путь для объединения двух потоков в структурированной потоковой передаче в Spark 2.x

У меня есть поток конфигураций (нечасто меняющихся, но если будет обновление, то будет сообщение) и еще один поток необработанных точек данных.

Насколько я понимаю, на данный момент spark не поддерживает присоединение к потоковым наборам данных или кадрам данных. Есть ли хороший способ обойти это?

Можно ли «сделать снимок» одного из наборов потоковых данных в статический набор данных (вероятно, конфигурационный, поскольку он имеет меньше обновлений), а затем присоединиться к другому набору потоковых данных?

Открыт для предложений!


person pikapoo    schedule 25.09.2017    source источник


Ответы (2)


«Обходной путь» - использовать текущую основную ветку;)

Он еще не выпущен, но текущая ветка master уже имеет внутреннее соединение поток-поток и выполняется внешнее соединение. См. эту заявку Jira для справки, в подзадаче вы видите возможные соединения с использовать.

Другого простого обходного пути нет. Потоковые соединения требуют сохранения состояния потоков, а затем исправления обновлений состояния. Вы можете увидеть код в запросах на вытягивание, реализовать соединение поток-поток довольно сложно.

person T. Gawęda    schedule 25.09.2017
comment
Это 3.0 а не 2.3 :) - person zero323; 25.09.2017
comment
Хм, целевая версия 2.3, а исправленная версия 3.0 - она ​​уже есть в мастере, как вы думаете, она не будет включена в 2.3? - person T. Gawęda; 25.09.2017
comment
Звучит как серьезное изменение. Возможно, это осознанный выбор. Но я не инсайдер, поэтому не могу сказать наверняка. - person zero323; 26.09.2017
comment
@zero323 Хорошо, я написал Татхагате Дасу :) Может быть, он знает - twitter.com/GawedaTomasz/status/912423624044421122 - person T. Gawęda; 26.09.2017
comment
Как насчет создания временного представления из одного из фреймов данных или набора данных? Затем выполните присоединение. Согласно полному руководству, представления фактически эквивалентны созданию нового DataFrame из существующего DataFrame. - person pikapoo; 26.09.2017

Итак, вот что я делаю в конце.

Поместите поток с меньшим количеством обновлений в приемник памяти. Затем сделайте выбор из этой таблицы. К этому времени он является статическим экземпляром и может быть присоединен к другому потоку. Не нужен триггер. Конечно, вам нужно правильно обновить таблицу самостоятельно.

Это не очень надежно, но это лучшее, что я могу придумать до официальной поддержки.

person pikapoo    schedule 13.10.2017
comment
У вас есть фрагмент кода, которым вы можете поделиться, чтобы понять это еще лучше? Спасибо! - person vkr; 02.12.2017