本文介紹如何在 mac 下快速構(gòu)建屬于自己的 Flink 應(yīng)用。
1. 本地安裝 flink
在 mac 上使用homebrew安裝 flink:
brew install apache-flink
查看安裝的位置:
brew info apache-flink
進(jìn)入安裝目錄,啟動(dòng) flink 集群:
cd /usr/local/Cellar/apache-flink/1.18.0
./libexec/bin/start-cluster.sh
進(jìn)入 web 頁面:http://localhost:8081/
2. 構(gòu)建項(xiàng)目
基于模板直接構(gòu)建一個(gè)項(xiàng)目:
curl https://flink.apache.org/q/quickstart.sh | bash -s 1.18.0
cd quickstart
在項(xiàng)目的 DataStreamJob 類實(shí)現(xiàn)如下計(jì)數(shù)的功能:
package org.myorg.quickstart;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
public class DataStreamJob {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.socketTextStream("127.0.0.1", 9000)
.flatMap(new LineSplitter())
.keyBy(0)
.sum(1)
.print();
env.execute("WordCount");
}
public static final class LineSplitter implements FlatMapFunction<String, Tuple2<String, Integer>> {
@Override
public void flatMap(String s, Collector<Tuple2<String, Integer>> collector) {
String[] tokens = s.toLowerCase().split("\\W+");
for (String token : tokens) {
if (token.length() > 0) {
collector.collect(new Tuple2<>(token, 1));
}
}
}
}
}
在上面的例子中,我們使用 DataStream API 構(gòu)建了一個(gè) Flink 應(yīng)用,數(shù)據(jù)源(source)為本地的 socket 9000 端口,經(jīng)過 flatMap、keyBy、sum 三個(gè)轉(zhuǎn)換操作之后,最后打印到標(biāo)準(zhǔn)輸出流。整體流程如下圖:
3. 運(yùn)行
啟動(dòng) socket 連接,監(jiān)聽 9000 端口:
nc -l 9000
打包,上傳(可以使用 Web UI 界面上傳,也可以使用命令行上傳)。
上傳后,就可以在 WebUI 看到正在運(yùn)行的 job 了。
此時(shí)通過在 socket 輸入內(nèi)容,
就可以在 task manager 的 stdout 看到打印結(jié)果了。
文章來源:http://www.zghlxwxcb.cn/news/detail-829261.html
4. 總結(jié)
本文從零開始在本地構(gòu)建運(yùn)行了一個(gè) Flink 應(yīng)用,包括 Flink 集群的安裝、Flink 應(yīng)用的構(gòu)建,以及 Flink 應(yīng)用的運(yùn)行。文章來源地址http://www.zghlxwxcb.cn/news/detail-829261.html
到了這里,關(guān)于從零開始快速構(gòu)建自己的Flink應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!