本文作者:林伟兵,叩丁狼高级讲师。原创文章,转载请注明出处。
1. Flink简介
Flink 提供了三个核心的用户API:
- Batch
- Streaming
- Talbe & SQL
本文不介绍Flink是什么,Flink的核心组件和特性,本文从用户的角度解读Batch和Streaming代码的实现方式,本文使用Flink1.6.1版本作为讲解。首先需要下载官方的案例,地址是:https://ci.apache.org/projects/flink/flink-docs-release-1.6/quickstart/java_api_quickstart.html.
2. 官方案例搭建
-
通过maven工具下载源码:
$ mvn archetype:generate \ -DarchetypeGroupId=org.apache.flink \ -DarchetypeArtifactId=flink-quickstart-java \ -DarchetypeVersion=1.6.1
-
也可以使用官方提供的地址下载,但是不管如何 都必须保证有maven环境:
$ curl https://flink.apache.org/q/quickstart.sh | bash -s 1.6.1
-
下载后的项目架构是这样的:
$ tree quickstart/ quickstart/ ├── pom.xml └── src └── main ├── java │ └── org │ └── myorg │ └── quickstart │ ├── BatchJob.java │ └── StreamingJob.java └── resources └── log4j.properties
-
将源码导入IDE中。打开IDE,点击“open”,将项目导进去,此时需要加载对应的maven依赖。等待项目构建完毕后,删除BatchJob.java和StreamingJob.java代码,因为这个两个代码只是提供了一个模板,并没有实质性的代码。
-
打开github网站,找到flink项目的example代码,将batch和streaming代码粘贴到项目中。
粘贴后的代码如下,运行程序后打印出单词统计的结果:
3. Batch代码解读:
如下贴出源代码,重要的代码部分参考注释:
public class WordCount {
public static void main(String[] args) throws Exception {
final ParameterTool params = ParameterTool.fromArgs(args);
//创建执行环境,这里的环境可以是本地环境,也可以是集群环境.
// 用户可以调用createLocalEnvironment()运行本地环境 也可以调用createRemoteEnvironment()运行集群环境
//getExecutionEnvironment()可以动态获取环境
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
// ParameterTool就是对参数的一个封装类,这里将传递进来的参数作为全局参数
env.getConfig().setGlobalJobParameters(params);
// get input data
DataSet<String> text;
if (params.has("input")) {
//如果运行程序携带input参数,则从input参数后面获取文件地址,从而读取文件的内容
text