как использовать лямбда-функцию в Flink keyBy

#apache-flink

#apache-flink

Вопрос:

Меня смущает раздел в https://ci.apache.org/projects/flink/flink-docs-release-1.11/learn-flink/etl.html#keyby

Сначала в нем говорится

 rides
    .flatMap(new NYCEnrichment())
    .keyBy(value -> value.startCell)
  

это не хорошо, потому что

Этот стиль выбора ключа имеет недостаток, заключающийся в том, что компилятор не может определить тип поля, используемого для ввода ключа, и поэтому Flink будет передавать значения ключей в виде кортежей, что может быть неудобно.

Но позже в этом разделе говорится

 rides
    .flatMap(new NYCEnrichment())
    .keyBy(enrichedRide -> enrichedRide.startCell)
  

это нормально, разве они не идентичны?

Ответ №1:

Вы правы, они идентичны, и с ними нет проблем.

Некоторые формы keyBy недавно устарели, и кто-то просмотрел и обновил все варианты использования устаревших форм keyBy в документах. В целом это было очень хорошо, но в этом конкретном месте это оставило запутанный абзац позади — потому что плохой пример больше не показан.

Комментарии:

1. Я все еще вижу то же самое, не могли бы вы дать ссылку?