flink对文件统计前10top打包执行代码
时间: 2024-03-16 18:45:56 浏览: 22
下面是使用Apache Flink对文件进行统计并输出前10个出现次数最多的单词的代码:
```java
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;
public class FileWordCount {
public static void main(String[] args) throws Exception {
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
String inputPath = "file:///path/to/your/file.txt";
env.readTextFile(inputPath)
.flatMap(new Tokenizer())
.groupBy(0)
.sum(1)
.sortPartition(1, org.apache.flink.core.fs.FileSystem.WriteMode.OVERWRITE)
.setParallelism(1)
.writeAsCsv("file:///path/to/your/output", "\n", " ")
.setParallelism(1);
env.execute("File WordCount");
}
public static final class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {
@Override
public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
String[] tokens = value.toLowerCase().split("\\W+");
for (String token : tokens) {
if (token.length() > 0) {
out.collect(new Tuple2<>(token, 1));
}
}
}
}
}
```
这个程序会读取文件中的单词,对单词进行计数并排序,最后输出出现次数最多的前10个单词。使用时只需要将代码中的输入路径和输出路径替换为实际的路径即可。注意:这里使用的是Flink的批处理模式。如果需要使用流处理模式,需要做一些修改。