在 Flink 中,可以使用 filter()
函数对数据进行过滤。filter()
函数接收一个 FilterFunction
类型的参数,该参数定义了过滤条件。
以下是一个简单的示例,演示如何使用 Flink 对数据流进行过滤:
import org.apache.flink.api.common.functions.FilterFunction; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer; import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer; public class FlinkFilterExample { public static void main(String[] args) throws Exception { // 创建 Flink 执行环境 final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 从 Kafka 读取数据 FlinkKafkaConsumerconsumer = new FlinkKafkaConsumer<>("input-topic", new SimpleStringSchema(), properties); DataStream stream = env.addSource(consumer); // 定义过滤条件 FilterFunction filterFunction = new FilterFunction () { @Override public boolean filter(String value) throws Exception { return value.contains("filter"); } }; // 使用 filter 函数过滤数据 DataStream filteredStream = stream.filter(filterFunction); // 将过滤后的数据写入 Kafka FlinkKafkaProducer producer = new FlinkKafkaProducer<>("output-topic", new SimpleStringSchema(), properties); filteredStream.addSink(producer); // 执行 Flink 任务 env.execute("Flink Filter Example"); } }
在上述示例中,我们首先从 Kafka 读取数据,然后定义了一个过滤条件,该条件只保留包含 “filter” 的字符串。接下来,我们使用 filter()
函数对数据流进行过滤,并将过滤后的数据写入 Kafka。最后,我们执行 Flink 任务。