Как проверить, что DataStream во флинке пуст или имеет данные

Я новичок в Apache flink, у меня есть поток данных, который реализует функцию процесса, если определенные условия выполняются, тогда поток данных действителен, и если он не соответствует условиям, я записываю его на боковой выход. Я могу распечатать поток данных, можно ли проверить, что поток данных пуст или равен нулю. Я пытался использоватьdatastream.equals(null) метод, но он не работает.Подскажите, пожалуйста, как узнать, пуст ли поток данных или нет

1 ответ

Под "пустым", я полагаю, вы имеете в виду, что данные не передаются. Что ты надеешься сделать в этом случае?

У Flink нет четко определенного понятия "пустой" поток. Потоки всегда связаны с одним или несколькими источниками, которые могут быть ограниченными или неограниченными. Ограниченные источники (например, файлы и коллекции) в конечном итоге завершаются, достигнув своего конца (в этот момент они испускают водяной знак со значением MAX_WATERMARK, за которым вы можете следить с помощью таймера), но в целом нет способа узнать, есть ли неограниченный источник (например, тема Kafka) может производить любые (дополнительные) данные.

Однако есть метрики, которые вы можете наблюдать, такие как NumRecordsOut или NumRecordsOutPerSecond, которые сообщают вам, производится ли какой-либо вывод. Или ваша функция процесса может собирать информацию о своем поведении и сообщать об этом на побочном выводе (скорее, как то, что вы уже делаете).

Другие вопросы по тегам