大数据-玩转数据-阿里Flink SQL

一、说明

阿里的实时计算Flink全托管开发控制台,是阿里云基于Apache Flink构建的企业级、高性能实时大数据处理系统。其开发使用主要为Flink SQL开发、Flink Datastream开发、Flink Python开发方向,这里主要就Flink SQL开发做一归纳。

Flink SQL开发提供了作业开发、作业启动、作业调试、管理自定义函数、配置Hive Metastore和管理自定义Connectors功能几个方面。

二、开发模板

Flink全托管提供了21种代码模板,每种代码模板都供了具体的使用场景、代码示例。可以通过代码模板快速实现自己的业务逻辑。

1、基础模板

2、聚合模板

在这里插入图片描述

3、其它模板

在这里插入图片描述
阿里管理平台路径:
实时计算管理控制台-Flink全托管页签-左侧导航栏上应用 >-模板中心。
除了数据开发代码模板,还有数据同步模板。

三、作业开发

Flink全托管产品为您提供Flink SQL的全套功能,包括元数据管理、UDF注册和SQL编辑器等。

在Flink全托管页签,单击目标工作空间操作列下的控制台,在左侧导航栏,单击作业开发,单击新建。
在新建文件对话框,填写作业配置信息。流作业和批作业均支持以下文件类型:SQL、JAR、PYTHON
选择作业需要部署的集群(Per-Job集群(默认):适用于占用资源比较大或持续稳定运行的作业。Session集群:适用于占用资源比较小或任务启停比较频繁的作业。

如果您需要开启SQL Preview功能,必须选择Session集群,且已将其设置为SQL Previews集群)

存储位置 指定该作业的代码文件所属的文件夹,您还可以在现有文件夹右侧,单击新建文件夹图标,新建子文件夹,确认。

在作业开发页面,编写DDL和DML代码。
示例代码如下。

–创建源表datagen_source。

CREATE TEMPORARY TABLE datagen_source(
  name VARCHAR
) WITH (
  'connector' = 'datagen'
);

–创建结果表blackhole_sink。

CREATE TEMPORARY TABLE blackhole_sink(
  name  VARCHAR
) WITH (
  'connector' = 'blackhole'
);

–将源表数据插入到结果表。

INSERT INTO blackhole_sink
SELECT
  name
from datagen_source;

一个完整代码案例

--Blink SQL
--********************************************************************--
--Author    : ******
--CreateTime: ******
--Comment   : ******
--********************************************************************--
CREATE TABLE t_animal (
    ID VARCHAR,
    NUM1 INTEGER,
	SMILESJ DATE
) WITH (
    type = 'datahub',
    endPoint = 'http://******************',
    roleArn = 'acs:ram::*******************',
    project = '${projectName}',
    topic = '${topicName}'
);
CREATE TABLE t_dim (
    ID VARCHAR,
    NAME VARCHAR
    PRIMARY KEY (ID),
    PERIOD FOR SYSTEM_TIME
) WITH (
    type = 'rds',
    url = 'jdbc:mysql://*******************',
    userName = '${userName}',
    password = '${password}',
    tableName = 't_dim'
);
 
CREATE TABLE t_animal_res (
    ID VARCHAR,
    NAME VARCHAR,
    NUM1 INTEGER,
	RQ VARCHAR
    PRIMARY KEY (ID)
) WITH (
    type = 'rds',
    url = 'jdbc:mysql://*******************',
    userName = '${userName}',
    password = '${password}',
    tableName = 't_animal_res'
);
 
INSERT INTO
    t_animal_res
SELECT
    B.ID,
    B.NAME,
	SUM(A.NUM1) AS NUM1,
    SUBSTR (CAST (CURRENT_TIMESTAMP AS VARCHAR), 1, 10) AS RQ
FROM
    t_animal A
    JOIN t_dim FOR SYSTEM_TIME AS OF PROCTIME () AS B ON A.ID = B.ID
WHERE
    --按照数据同步时间进行where关联当天
    SUBSTR (CAST (A.SMILESJ AS VARCHAR), 1, 10) = SUBSTR (CAST (CURRENT_TIMESTAMP AS VARCHAR), 1, 10)
GROUP BY
    B.ID,
    B.NAME;

在作业开发页面右侧,单击高级配置,填写配置信息。包括基础配置,行为配置 ,Flink配置,日志配置 ,资源信息。可以根据实际需求和阿里帮助文档有针对性地调整。

下一步就是保存,验证代码,单击上线,将数据发布至生产环境。

四、作业启动

完成作业开发和上线后,您需要在作业运维页面启动作业至运行阶段。此外,作业在暂停或者停止后需要恢复时,需要启动作业。
在这里插入图片描述
在这里插入图片描述

五、作业调试

我们可以使用作业调试功能模拟作业运行、检查输出结果,验证SELECT或INSERT业务逻辑的正确性,提升开发效率,降低数据质量风险。
在这里插入图片描述
在Flink全托管开发控制台上对状态为RUNNING的作业可以进行暂停或停止操作。
在这里插入图片描述

六、Flink SQL 快速示例

在这里插入图片描述

七、管理自定义函数(UDF)

Flink全托管自定义函数(UDF),包括注册、更新和删除。SQL需要使用UDF,您需要先注册您的UDF,上传UDF JAR文件,才能在SQL中使用。

八、配置Hive Metastore

Flink全托管模式下配置Hive Metastore、查看Hive元数据、使用Hive Metastore和删除Hive Metastore。

将Hive Metastore配置文件和Hadoop依赖存放至对象存储OSS控制台指定目录后,再在Flink全托管开发控制台上配置Hive Metastore功能。配置成功后,您就可以在Flink全托管开发控制台上直接使用DML创建业务逻辑,获取Hive中表的元数据信息,无需再使用DDL语句声明相应的表信息。Hive Metastore可以作为Stream作业和Batch作业的源表或结果表。

前提条件
已在Hive Metastore侧开启了Hive Metastore服务。
相关命令如下:
hive --service metastore:开启Hive Metastore服务。
netstat -ln | grep 9083:查询Hive Metastore服务是否已开启。
其中9083是Hive Metastore的默认端口号。如果您在hive-site.xml配置了其他的端口号,则需要将9083改为对应的端口号。

已在Hive Metastore侧配置了白名单,使得Flink全托管可以访问Hive Metastore。
Flink全托管网段的获取方法请参见设置白名单,在Hive Metastore侧配置白名单的方法请参见添加安全组规则。

九、管理自定义Connectors

配置Hologres Catalog后,您就可以在Flink全托管控制台直接读取Hologres元数据,不用再手动注册Hologres表,可以提高作业开发的效率且保证数据的正确性。Flink全托管模式下配置、查看及删除Hologres Catalog。

阿里官网帮助:
https://help.aliyun.com/document_detail/290056.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值