学习笔记Flink(五)—— Flink开发环境配置及运行实例(单词计数)
一、Intellij IDEA 环境配置
1、创建Maven工程
1.1、开发环境
Maven && JDK
1.2、Pom配置
Compiler Configuration
在pom.xml添加:
<properties><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.source>1.8</maven.compiler.source>
</properties><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.6.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins>
</build>
Flink Dependency
在pom.xml添加:
<dependencies><!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-scala --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-scala_2.11</artifactId><version>1.10.1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.flink/flink-clients --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-clients_2.11</artifactId><version>1.10.1</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.7</version><scope>runtime</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version><scope>runtime</scope></dependency>
</dependencies>
然后IDEA就会自动帮我们添加依赖
1.3、Log配置
log4j.properties
在resources下建立log4j.properties
文件并添加(linux上flink安装目录conf下的log4j-console.properties内容):
# This affects logging for both user code and Flink
log4j.rootLogger=INFO, console# Uncomment this if you want to _only_ change Flink's logging
log4j.logger.org.apache.flink=INFO# The following lines keep the log level of common libraries/connectors on
# log level INFO. The root logger does not override this. You have to manually
# change the log levels here.
log4j.logger.akka=INFO
log4j.logger.org.apache.kafka=INFO
log4j.logger.org.apache.hadoop=INFO
log4j.logger.org.apache.zookeeper=INFO# Log all infos to the console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n# Suppress the irrelevant (wrong) warnings from the Netty channel handler
log4j.logger.org.apache.flink.shaded.akka.org.jboss.netty.channel.DefaultChannelPipeline=ERROR, console
1.4、添加Scala支持
在main文件下新建一个scala目录,并设置为source root
添加scala支持
二、案例:Flink单词计算本地实战
代码:
package demo
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.api.windowing.time.Time
object WindowWordCount {def main(args: Array[String]): Unit = {val host = "node110"val port = 9999val windowSeconds = 5//get envval env = StreamExecutionEnvironment.getExecutionEnvironment//create data sourceval source = env.socketTextStream(host, port)val counts = source.flatMap { line => line.toLowerCase.split("\\W+").filter(word => word.nonEmpty) }.map { word => (word, 1) }.keyBy(0).timeWindow(Time.seconds(windowSeconds)).sum(1)//add sinkcounts.print()//executeenv.execute("Window Stream Word Count with paremters")}
}
测试:
linux执行命令:nc -lk 9999
三、Flink集群运行实战
3.1、代码修改
if(args.length != 3){println("Usage: WindowWordCount <socketHost> <socketPort> <windowSeconds>")System.exit(1)
}
val host = args(0)
val port = args(1).toInt
val windowSeconds = args(2).toInt
3.2、程序打包 & 上传
3.3、运行
先开启一个会话(注意先开启,否则执行会出现一堆东西)
再开一个会话
输入数据:
网页查看:
四、Dataset API实现(单词计数)
数据文件 input.txt:
I am a student
I love the world
代码:
package demoimport org.apache.flink.streaming.api.scala._
import org.apache.flink.api.scala.ExecutionEnvironmentobject WordCount {def main(args: Array[String]): Unit = {//get envval env = ExecutionEnvironment.getExecutionEnvironment//create data sourceval source = env.readTextFile("D:\\java test\\flink_test\\src\\main\\resources\\input.txt")val counts = source.flatMap { line => line.toLowerCase.split("\\W+").filter(word => word.nonEmpty) }.map { word => (word, 1) }.groupBy(0).sum(1)//add sinkcounts.writeAsText("D:\\java test\\flink_test\\target\\output00")//executeenv.execute("Batch Word Count")}
}
结果
学习笔记Flink(五)—— Flink开发环境配置及运行实例(单词计数)相关推荐
- React Native学习笔记一之搭建开发环境
因为项目需要,今天开始正式学习React Native,先来搭建个开发环境 忐忑的心情 因为项目比较急,而且客户要求使用React Native开发,只能先学点基础然后在项目中使用的时候,边做边学了, ...
- AutoGLuon学习笔记(一):环境配置与API初识
AutoGLuon学习笔记(一):环境配置与API初识 环境配置 CUDA安装 Autogluon安装 图片分类 数据集导入和处理 拟合模型 预测新图片 测试集准确率 保存模型 超参数优化 模型范围设 ...
- 51单片机学习笔记1 简介及开发环境
51单片机学习笔记1 简介及开发环境 一.51单片机 1. STC89C52单片机简介 2. 命名规则 3. 封装 (1)PDIP (2)LQFP (3)PLCC (4)PQFP 二.STC8051结 ...
- 张高兴的 Xamarin.Android 学习笔记:(一)环境配置
最近在自学 Xamarin 和 Android ,同时发现国内在做 Xamarin 的不多.我在自学中间遇到了很多问题,而且百度到的很多教程也有些过时,现在打算写点东西稍微总结下,顺便帮后人指指路了. ...
- Python学习笔记2-搭建Python开发环境
1 Python开发环境概述 所谓"工欲善其事,必先利其器".在正式学习Python开发前,需要先搭建Python开发环境.Python是跨平台的开发工具,可以在多个操作系统上进 ...
- Hadoop学习笔记—1.基本介绍与环境配置
一.Hadoop的发展历史 说到Hadoop的起源,不得不说到一个传奇的IT公司-全球IT技术的引领者Google.Google(自称)为云计算概念的提出者,在自身多年的搜索引擎业务中构建了突破性的G ...
- NXP RT1064学习笔记(一)— 开发环境
最近在做RT1064的开发,网上能找到的资料不多,基本上都是NXP官方的资料,于是决定自己写笔记做个记录. i.MX RT1064 简介 i.MX RT1064 处理器属于全新的处理器系列,采用恩智浦 ...
- JAVA学习笔记_五JAVA开发中的WEB前端技术
css 字体属性: font-size font-style font-family font-weight font 设置字体font-family时,中文.英文字体设置时的顺序,英 ...
- 鸿蒙系统究竟是PPT秀还是有真材实料?鸿蒙HarmonyOS开发环境搭建与运行Demo
前言: 对于华为而言,做鸿蒙的最好答案,也许不是为了追求眼前的速胜,而是为了不下牌桌等待机遇. 手机领域,鸿蒙式微.但物联网领域,技术难度并不大,虽然行业仍需要时日才会爆发,但依然是值得卡位的趋势. ...
最新文章
- matlab-矩阵应用
- 【Flask】SQLALchemy的介绍
- python面对对象编程------3:写集合类的三种方法
- 文件的输入/输出操作
- vim配置vimrc详解
- 前端框架这么火,还有必要学好原生 JavaScript 吗?
- 代码精进之路读后感(三)
- C语言解决迭代递推问题
- Python之logging模块
- JBOSS集群技术升级版解决方案分享(图示篇)
- 【DIY装机】华硕主板驱动安装失败的问题
- PostgreSQL 存储过程(Procedures)和函数(Functions)的区别
- Web性能优化:雅虎35条
- kafka面试题整理
- 基于ERDAS软件的高分三号(GF-3)SAR影像的预处理
- pwm脉宽调制c语言程序,MCS-51系列单片机C语言编程PWM脉宽调制器程序模板
- Unity-Some objects were not cleaned up when closing the scene.
- 审计系统---堡垒机项目之表结构设计
- android手机软件安装位置,改变Android手机软件安装位置方法
- Linux 命令系统
热门文章
- python h5游戏_从零开始制作H5人脸融合小游戏
- 数字字符串转化为字母组合的种数
- Tableau实战系列浏览 Tableau 环境(一) -初识tableau操作界面
- MATLAB实战系列(十四)-如何通过YALMIP和CPLEX求解小规模(CVRP)路径调度问题(附MATLAB代码)
- 机器学习算法与Python实践之(一)k近邻(KNN)
- pycharm安装怎么选_客厅窗帘怎么选 客厅窗帘怎么安装好看
- 树转化为二叉树_森林转化为二叉树(详解版)
- 神经元模型及网络结构
- 人工智能的发展趋势和行业岗位
- 关于mybatis里面的Executor--转载