目的
report(transactions).executeInsert(“spend_report”);
将 transactions 表经过 report 函数处理后写入到 spend_report 表。
每分钟(或小时)计算在五分钟(或小时)内每个账号的平均交易金额(滑动窗口)?使用分钟还是小时作为单位均可。
前提
1、运行环境
电脑上需要安装如下环境:Java 8 或者 Java 11、Maven、Git、Docker
2、代码环境
配置文件位于 flink-playgrounds 仓库中,首先检出该仓库并构建 Docker 镜像:
git clone https://github.com/apache/flink-playgrounds.git
cd flink-playgrounds/table-walkthrough
3、如何运行和停止
- 在开始运行之前先在 Docker 主机上创建检查点和保存点目录
(如果不做这一步有可能报错):
mkdir -p /tmp/flink-checkpoints-directory
mkdir -p /tmp/flink-savepoints-directory
- 编译打包代码:
docker-compose build
- 启动环境:
docker-compose up -d
执行如下命令停止 Docker 环境:
docker-compose down -v
4、查看和验证
Flink WebUI 界面
- 打开浏览器并访问 http://localhost:8081
日志
- 查看 JobManager 日志:docker-compose logs -f jobmanager
- 查看 TaskManager 日志:docker-compose logs -f taskmanager
把结果导入 MySQL
- docker-compose exec mysql mysql -Dsql-demo -usql-demo -pdemo-sql
- mysql> use sql-demo;
- mysql> select count(*) from spend_report;
在 Grafana 查看最终结果
代码