flink1.6 потоковая передача без окон LEFT OUTER JOIN вышла из строя - PullRequest
0 голосов
/ 12 октября 2018

Streaming non window left outer join - это новая функция в flink1.6.Когда я делаю это между двумя динамическими таблицами.результат соединения не в порядке.Как правильно использовать эту функцию?Две динамические таблицы упорядочены по data_update_time.NonWindowJoin - состояние левой и правой таблиц, оба используют управляемое состояние flink MapState.Когда я смотрю non window join код Flink.Я запутался, что: (1) код NonWindowJoin.scala ключ MapState является Row объектом.Функция hashCode и equal для Row определяется всеми полями Row.Таким образом, если потоковые события поступают из binlog базы данных mysql, MapState[Row, JTuple2[Long, Long]] всегда будет добавляться (не обновляться).Это MapState будет записывать список изменений той же записи, что и в базе данных mysql.Я сомневаюсь, что порядок определения результата не определен?(2) Когда его повторять, следует ли проходить в том порядке, в котором расположены состояния?(3) Как найти причину результата объединения не по порядку.

1 Ответ

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

Нет гарантии относительно порядка результатов объединения.Как и в реляционной базе данных, объединения Flink дают результаты в любом порядке, удобном и эффективном для реализации.Объединения выполняют итерацию по MapState объектам, и конкретный порядок этих итераторов зависит от того, какой бэкэнд состояния используется.

...