Проблема согласованности данных при обновлении flink hbase - PullRequest
0 голосов
/ 27 сентября 2018

В операторе, подобном map, появляются два числа с одинаковым ключом.Первое число получает значение по ключу из hbase, добавляет их и помещает новое значение в hbase через сток (dataStream.write (new HBaseOutputFormat (), 0L)).Второе значение делает то же самое.Возможно ли, чтобы второе число получило значение из hbase до обновления первого числа в hbase?Могу ли я избежать этой проблемы, если я заковыряю оператора в цепочку?Если нет, что мне делать?Спасибо!

1 Ответ

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

Вам нужна функция keyBy из API DataStream или groupBy в случае использования API DataSet: см. Документация Flink .Эти функции гарантируют, что один конкретный ключ всегда обрабатывается одним конкретным слотом.Один слот представляет один поток, что означает, что ваши два числа обрабатываются последовательно, даже если параллелизм больше 1.

Конечно, вы должны убедиться, что операция ввода в HBase блокирует, так что вы можетене используют асинхронные способы взаимодействия с HBase, такие как BufferedMutator или Асинхронные операторы ввода / вывода .

...