Flink SQL-Client探索

SQL-Client 就是一个便于大家学习和写 demo 的一个 Flink-SQL 工具,这次文章的基本流程还是根据社区云邪大佬的公开课,和 官方 wiki 的步骤执行的,这里就大体自己捣鼓了一遍记录一下。



前提准备


从 GitHub 上 clone ververica/sql-training 的 Docker 镜像
地址为:https://github.com/ververica/sql-training 包含如下镜像:

执行 docker-compose up -d加载镜像

执行 docker-compose exec sql-client ./sql-client.sh启动 sql-client 看到松鼠就代表跑起来了!

执行 docker-compose down终止


具体实践


执行show tables;
我们先看一下自带了这几张表

如果你想自己自定义表需要到 sql-training/build-image/training-config.yaml下去自定义表结构,具体操作可以参照官方的文档,这次主要用到 Rides这张表

Rides 的表结构是这样的

字段 类型 含义
rideId BIGINT 行为 ID(包含两条记录,一条入一条出)
taxiId BIGINT 出租车 ID
isStart BOOLEAN 开始 or 结束
lon FLOAT 经度
lat FLOAT 维度
rideTime TIMESTAMP 时间
psgCnt INT 乘客数

这里我们顺便介绍下training-config.yaml里的结构,sql-client 目前是提供了配置的方式定义表结构,如下:

  • type:声明是一个 source 还是 sink
  • update-mode:表里面的数据是什么行为 append 模式 update 模式
  • schema:表结构字段的定义。
  • 具体介绍一下rideTime事件发生的时间,需要基于这个时间来做一些窗口的操作,因此要把这个字段声明为rowtime字段添加watermarkwatermark是Flink里的时间机制,之后的文章再做详细介绍。
  • connector:主要定义连接配置,像KafkaElasticsearch等。
  • format:定义如何去解析定义的格式。

我们先来简单的执行一个 SQL 语句 select * from Rides;看一下 Rides表数据

这时候打开 http://localhost:8081/ (Flink Web)可以发现刚才的 SQL 任务已经跑起来了

同时终端也运行出了结果
在这里插入图片描述


需求 1(filter)


现在有这么一个需求,统计出现在纽约的行车记录。这里我们需要进行一个过滤的操作,我们需要有个自定义的 UDF ,具体思路是,表里面有经度和维度这两个字段,通过这个可以来开发一个是否在纽约的 UDF。(这里官方 Demo 里已经帮我们写好了2333)代码都在 sql-training/build-image/sql-udfs下的IsInNYC,继承 ScalarFunction类实现 eval方法。

public class IsInNYC extends ScalarFunction {
   

	// geo boundaries of the area of NYC
	private static double LON_EAST = -73.7;
	private static double LON_WEST 
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值