Нужно ли использовать окна во Flink? - PullRequest
2 голосов
/ 03 апреля 2019

Я пытаюсь преобразовать поток данных без использования окна, предоставленного Flink. Мой код выглядит примерно так:

val stream1 = executionEnvironment.getStream
val stream2 = stream1.flatMap(someFunction)

stream2.addSink(s3_Sink)
executionEnvironment.execute()

Тем не менее, после отправки и выполнения моей работы, я не получаю вывод на S3. Веб-интерфейс показывает 0 полученных байтов, 0 полученных записей, 0 отправленных байтов, 0 отправленных записей.

Другое запущенное задание Flink уже использует тот же источник данных, поэтому с источником данных все в порядке. Там нет нигде ошибок, но все еще нет вывода. Может ли это быть из-за того, что я не использую какие-либо операции с окнами или клавишами? Я попытался получить выходные данные после назначения восходящих временных меток, но не получил никакого вывода. Есть идеи, что не может работать?

1 Ответ

3 голосов
/ 03 апреля 2019

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

Относительно вашей первоначальной проблемы: из того, что вы показали до сих пор, я могу только представить, что оператор flatMap не производит никакого вывода (в отличие от карты, которая всегда должна выдавать значение, flatMap может отфильтровать все). Может быть, вы можете добавить больше кода, чтобы мы могли взглянуть поближе.

...