目录
Flink常用方法使用案例
本文介绍了Flink中常用的方法,并提供了相应的使用案例。
1. 数据源
1.1. Socket
从Socket中读取数据,示例代码如下:
DataStream<String> text = env.socketTextStream("localhost", 9999);
1.2. 文件
从文件中读取数据,示例代码如下:
DataStream<String> text = env.readTextFile("file:///path/to/file");
1.3. Kafka
从Kafka中读取数据,示例代码如下:
Properties properties = new Properties();
properties.setProperty("bootstrap.servers", "localhost:9092");
properties.setProperty("group.id", "test");
FlinkKafkaConsumer<String> consumer = new FlinkKafkaConsumer<>("topic", new SimpleStringSchema(), properties);
DataStream<String> stream = env.addSource(consumer);
2. 数据转换
2.1. Map
对数据进行Map操作,示例代码如下:
DataStream<String> text = ...;
DataStream<Integer> lengths = text.map(new MapFunction<String, Integer>() {
@Override
public Integer map(String value) throws Exception {
return value.length();
}
});
2.2. FlatMap
对数据进行FlatMap操作,示例代码如下:
DataStream<String> text = ...;
DataStream<String> words = text.flatMap(new FlatMapFunction<String, String>() {
@Override
public void flatMap(String value, Collector<String> out) throws Exception {
for (String word : value.split("\\s")) {
out.collect(word);
}
}
});
2.3. Filter
对数据进行Filter操作,示例代码如下:
DataStream<String> text = ...;
DataStream<String> filtered = text.filter(new FilterFunction<String>() {
@Override
public boolean filter(String value) throws Exception {
return value.startsWith("ERROR");
}
});
2.4. KeyBy
对数据进行KeyBy操作,示例代码如下:
DataStream<Tuple2<String, Integer>> data = ...;
KeyedStream<Tuple2<String, Integer>, String> keyed = data.keyBy(new KeySelector<Tuple2<String, Integer>, String>() {
@Override
public String getKey(Tuple2<String, Integer> value) throws Exception {
return value.f0;
}
});
3. 数据聚合
3.1. Reduce
对数据进行Reduce操作,示例代码如下:
KeyedStream<Tuple2<String, Integer>, String> keyed = ...;
DataStream<Tuple2<String, Integer>> reduced = keyed.reduce(new ReduceFunction<Tuple2<String, Integer>>() {
@Override
public Tuple2<String, Integer> reduce(Tuple2<String, Integer> value1, Tuple2<String, Integer> value2) throws Exception {
return new Tuple2<>(value1.f0, value1.f1 + value2.f1);
}
});
3.2. Aggregations
对数据进行Aggregations操作,示例代码如下:
KeyedStream<Tuple2<String, Integer>, String> keyed = ...;
DataStream<Tuple2<String, Integer>> aggregated = keyed.sum(1);
4. 数据输出
4.1. Print
将数据输出到控制台,示例代码如下:
DataStream<String> text = ...;
text.print();
4.2. WriteAsText
将数据输出到文件,示例代码如下:
DataStream<String> text = ...;
text.writeAsText("file:///path/to/output");
4.3. WriteToSocket
将数据输出到Socket,示例代码如下:
DataStream<String> text = ...;
text.writeToSocket("localhost", 9999, new SimpleStringSchema());
5. 执行任务
5.1. ExecutionEnvironment
创建ExecutionEnvironment,示例代码如下:
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
5.2. StreamExecutionEnvironment
创建StreamExecutionEnvironment,示例代码如下:
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
5.3. execute
执行任务,示例代码如下:
env.execute("My Flink Job");
6. 总结
本文介绍了Flink中常用的方法,并提供了相应的使用案例。通过本文的学习,读者可以掌握Flink的基本操作,为进一步深入学习Flink打下基础。