keyBy всегда дорог, потому что заставляет записи проходить через ser / de. Но в случае, когда связь является локальной - то есть в пределах одного и того же слота задачи - тогда Flink будет использовать общий буфер для передачи сериализованных байтов, а не проходить через весь стек netty tcp. Так что да, в вашем случае второй ключ дешевле, чем первый. Но я бы не сказал, что стоимость небольшая.
Если вы знаете, что keyBy совершенно не нужен, вы можете использовать reinterpretAsKeyedStream , чтобы снова получить KeyedStream
без всего этогонакладные расходы.