flink batch wordcount
1、POJO方式
- public class WordCountPojo {
- public static class Word{
- private String word;
- private int frequency;
- public Word() {
- }
- public Word(String word, int frequency) {
- this.word = word;
- this.frequency = frequency;
- }
- public String getWord() {
- return word;
- }
- public void setWord(String word) {
- this.word = word;
- }
- public int getFrequency() {
- return frequency;
- }
- public void setFrequency(int frequency) {
- this.frequency = frequency;
- }
- @Override
- public String toString() {
- return "Word=" + word + " freq=" + frequency;
- }
- }
- /**
- * Implements the string tokenizer that splits sentences into words as a user-defined
- * FlatMapFunction. The function takes a line (String) and splits it into
- * multiple Word objects.
- */
- public static final class Tokenizer implements FlatMapFunction<String, Word> {
- @Override
- public void flatMap(String value, Collector<Word> out) {
- // normalize and split the line
- String[] tokens = value.toLowerCase().split("\\W+");
- // emit the pairs
- for (String token : tokens) {
- if (token.length() > 0) {
- out.collect(new Word(token, 1));
- }
- }
- }
- }
- public static void main(String args[]) throws Exception {
- final ParameterTool params = ParameterTool.fromArgs(args);
- // set up the execution environment
- final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
- // make parameters available in the web interface
- env.getConfig().setGlobalJobParameters(params);
- // get input data
- DataSet<String> text;
- if (params.has("input")) {
- // read the text file from given input path
- text = env.readTextFile(params.get("input"));
- } else {
- // get default test text data
- System.out.println("Executing WordCount example with default input data set.");
- System.out.println("Use --input to specify file input.");
- text = WordCountData.getDefaultTextLineDataSet(env);
- }
- DataSet<Word> counts = text
- // split up the lines into Word objects (with frequency = 1)
- .flatMap(new Tokenizer())
- // group by the field word and sum up the frequency
- .groupBy("word")
- .reduce(new ReduceFunction<Word>() {
- @Override
- public Word reduce(Word value1, Word value2) throws Exception {
- return new Word(value1.word, value1.frequency + value2.frequency);
- }
- });
- if (params.has("output")) {
- counts.writeAsText(params.get("output"), FileSystem.WriteMode.OVERWRITE);
- // execute program
- env.execute("WordCount-Pojo Example");
- } else {
- System.out.println("Printing result to stdout. Use --output to specify output path.");
- counts.print();
- }
- }
- }
2、元组方式
- public class WordCount {
- /**
- * Implements the string tokenizer that splits sentences into words as a user-defined
- * FlatMapFunction. The function takes a line (String) and splits it into
- * multiple pairs in the form of "(word,1)" ({@code Tuple2<String, Integer>}).
- */
- public static final class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {
- @Override
- public void flatMap(String value, Collector<Tuple2<String, Integer>> out) throws Exception {
- // normalize and split the line
- String[] tokens = value.toLowerCase().split("\\W+");
- // emit the pairs
- for (String token : tokens) {
- if (token.length() > 0) {
- out.collect(new Tuple2<>(token, 1));
- }
- }
- }
- }
- public static void main(String args[]) throws Exception {
- final ParameterTool params = ParameterTool.fromArgs(args);
- // set up the execution environment
- final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
- // make parameters available in the web interface
- env.getConfig().setGlobalJobParameters(params);
- // get input data
- DataSet<String> text;
- if (params.has("input")) {
- // read the text file from given input path
- text = env.readTextFile(params.get("input"));
- } else {
- // get default test text data
- System.out.println("Executing WordCount example with default input data set.");
- System.out.println("Use --input to specify file input.");
- text = WordCountData.getDefaultTextLineDataSet(env);
- }
- DataSet<Tuple2<String,Integer>> counts = text
- // split up the lines in pairs (2-tuples) containing: (word,1)
- .flatMap(new Tokenizer())
- // group by the tuple field "0" and sum up tuple field "1"
- .groupBy(0)
- .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);
- }
- }); //等效于sum(1)
- // .sum(1);
- // emit result
- if(params.has("output")){
- counts.writeAsCsv(params.get("output"),"\n"," ");
- // execute program
- env.execute("WordCount batch");
- }else {
- System.out.println("Printing result to stdout. Use --output to specify output path.");
- counts.print();
- }
- }
- }
flink batch wordcount的更多相关文章
- Flink Batch SQL 1.10 实践
Flink作为流批统一的计算框架,在1.10中完成了大量batch相关的增强与改进.1.10可以说是第一个成熟的生产可用的Flink Batch SQL版本,它一扫之前Dataset的羸弱,从功能和性 ...
- Flink实例-Wordcount详细步骤
link实例之Wordcount详细步骤 1.我的IDE是IntelliJ IDEA.在官网上https://www.jetbrains.com/idea/下载最新版2018.2的IDEA,如下图.破 ...
- Apache Flink - Batch(DataSet API)
Flink DataSet API编程指南: Flink中的DataSet程序是实现数据集转换的常规程序(例如,过滤,映射,连接,分组).数据集最初是从某些来源创建的(例如,通过读取文件或从本地集合创 ...
- [Flink]Flink1.6三种运行模式安装部署以及实现WordCount
前言 Flink三种运行方式:Local.Standalone.On Yarn.成功部署后分别用Scala和Java实现wordcount 环境 版本:Flink 1.6.2 集群环境:Hadoop2 ...
- 【Flink】Flink基础之WordCount实例(Java与Scala版本)
简述 WordCount(单词计数)作为大数据体系的标准示例,一直是入门的经典案例,下面用java和scala实现Flink的WordCount代码: 采用IDEA + Maven + Flink 环 ...
- hadoop记录-[Flink]Flink三种运行模式安装部署以及实现WordCount(转载)
[Flink]Flink三种运行模式安装部署以及实现WordCount 前言 Flink三种运行方式:Local.Standalone.On Yarn.成功部署后分别用Scala和Java实现word ...
- Apache Flink Quickstart
Apache Flink 是新一代的基于 Kappa 架构的流处理框架,近期底层部署结构基于 FLIP-6 做了大规模的调整,我们来看一下在新的版本(1.6-SNAPSHOT)下怎样从源码快速编译执行 ...
- Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)
本文由 网易云发布. 1.Flink架构及特性分析 Flink是个相当早的项目,开始于2008年,但只在最近才得到注意.Flink是原生的流处理系统,提供high level的API.Flink也提 ...
- Flink的高可用集群环境
Flink的高可用集群环境 Flink简介 Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布,数据通信以及容错机制等功能. 因现在主要Flink这一块做先关方面的学习, ...
随机推荐
- 【软件工程1916|W(福州大学)_助教博客】2019年上学期期末问卷调查结果公示
1.调查问卷概况 福州大学2019W班,收集到有效答卷44份 2. 调查问卷情况 Q1:请问你平均每周在课程上花费多少小时? 去除自估水平超过40小时的,平均16.6H Q2.软工实践的各次作业分别花 ...
- 283.移动零 关于列表list与remove原理*****(简单)
题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 注意,该题目要求不开辟行的数组空间,在原数据上进行操作. 示例: 输入: [0,1,0,3,12 ...
- golang 登录
用户的两种登录模式 1.LDAP登录 //ldapLogin 通过LDAP登陆 func (m *Member) ldapLogin(account string, password string) ...
- 【入门篇一】HelloWorld演示(2)
一.传统使用 Spring 开发一个“HelloWorld”的 web 应用 1. 创建一个 web 项目并且导入相关 jar 包. 2. 创建一个 web.xml 3. 编写一个控制类(Contro ...
- html表格及列表
表格的属性: border:边框 cellpadding:内边距 单元格边框跟内容之间的间距 cellspacing:外边距 单元格跟单元格之间的距离 align:表格的对其样式 width:宽度 ...
- __str__与__repr__的触发顺序总结
1.__str__是个内置的方法,无需使用者去调用,其会在满足某一条件时自动触发.那么要触发它运行都有哪些条件呢? 有三种条件,分别为:print , str , %s 2.__repr__同样是个内 ...
- [C/C++]大小端字节序转换程序
计算机数据存储有两种字节优先顺序:高位字节优先(称为大端模式)和低位字节优先(称为小端模式). 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿 ...
- css盲点
以下纯属个人知识扫盲,记录下笔记 1.子元素设置display:inline-block时,彼此之间会出现一条细小的缝隙,解决办法:父元素设置font-size:0:就可消除缝隙了 2.能不用动画就不 ...
- 第04组 Alpha冲刺(3/6)
队名:new game 组长博客:戳 作业博客:戳 组员情况 鲍子涵(队长) 燃尽图 过去两天完成了哪些任务 才两天,也就是实现一些功能而已 复习 接下来的计划 实现更多的功能 为下周的比赛准备 还剩 ...
- git强制合并另一个分支
New分支和Old分支都修改了同样的部分,有冲突,但是想在Old分之上合并New分支的内容,并且以New分支为主,就是不自己手动解决冲突,碰到冲突,直接以New分支为主. 参考 https://git ...