基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索

这篇具有很好参考价值的文章主要介绍了基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

随着业务的发展,实时场景在各个⾏业中变得越来越重要。⽆论是⾦融、电商还是物流,实时数据处理都成为了其中的关键环节。Flink 凭借其强⼤的流处理特性、窗⼝操作以及对各种数据源的⽀持,成为实时场景下的⾸选开发⼯具。

FlinkSQL 通过 SQL 语⾔⾯向数据开发提供了更友好的交互⽅式,但是其开发⽅式和离线开发 SparkSQL 仍然存在较⼤的差异。袋鼠云实时开发平台StreamWorks,⼀直致⼒于降低 FlinkSQL 的开发门槛,让更多的数据开发掌握实时开发能⼒,普及实时计算的应⽤。

本文将为大家简单介绍在袋鼠云实时开发平台开发 FlinkSQL 任务的四种⽅式。

脚本模式

该模式是最基础的开发⽅式,数据开发人员在平台 IDE 中通过 FlinkSQL 代码,完成 Flink 表定义和业务逻辑加⼯。代码如下:

-- 定义数据源表
CREATE TABLE server_logs (
client_ip STRING,
client_identity STRING,
userid STRING,
user_agent STRING,
log_time TIMESTAMP(3),
request_line STRING,
status_code STRING,
size INT
) WITH (
'connector ' = 'faker ',
'fields .client_ip .expression ' = '#{Internet .publicIpV4Address} ',
'fields .client_identity .expression ' =  '- ',
'fields .userid .expression ' =  '- ',
'fields .user_agent .expression ' = '#{Internet .userAgentAny} ',
'fields .log_time .expression ' =  '#{date .past ' '15 ' ', ' '5 ' ', ' 'SECONDS ' '} ',
'fields .request_line .expression ' = '#{regexify ' '(GET |POST |PUT |PATCH){1} ' '} #{regexify ' '(/search\ .html|/login\ .html|/prod\ .html|c
'fields .status_code .expression ' = '#{regexify ' '(200 |201 |204 |400 |401 |403 |301){1} ' '} ',
'fields .size .expression ' = '#{number .numberBetween ' '100 ' ', ' '10000000 ' '} '
);

-- 定义结果表,  实际应用中会选择  Kafka、JDBC 等作为结果表
CREATE TABLE client_errors (
log_time TIMESTAMP(3),
request_line STRING,
status_code STRING,
size INT
) WITH (
'connector ' = 'stream-x '
);

-- 写入数据到结果表
INSERT INTO client_errors
SELECT
log_time,
request_line,
status_code,
size
FROM server_logs
WHERE status_code SIMILAR TO '4[0-9][0-9] ';

脚本模式的优缺点

优点:灵活性⾼。

缺点:Flink表定义逻辑复杂,如果不熟悉数据源插件,很难记住需要维护哪些参数;如果该任务涉及多张表,代码块中存在⼤段表定义代码,不⽅便排查业务逻辑。

向导模式

基于脚本模式存在的缺点,袋鼠云实时开发平台将 Flink 表定义逻辑抽象成了可视化配置的功能,引导数据开发⼈员通过⻚⾯配置化的⽅式完成 Flink 表定义,让数据开发更专注在业务逻辑的加⼯。

基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索

向导模式是在开发⻚⾯的配置项中根据⻚⾯引导,完成 Flink 表的源表、维表、结果表的映射,然后在 IDE 中直接引⽤,读写对应的 Flink 表,完成逻辑开发。

· 平台默认提供各类数据源的源表、维表、结果表常⽤配置项;

· 对于各种⾼级参数,平台也提供了维护⾃定义参数的 key/value ⽅式来满⾜灵活性要求。

Catalog 模式

在向导模式中,我们可以借助配置化的⽅式快速完成表映射,但同时也存在⼀个问题,这些映射表只能在当前任务中被引⽤,⽆法在不同的任务中复⽤。

但是在真实的实时数仓建设过程中,我们常会遇到下⾯这种场景:某⼀个 dws 层级的 kafka topic,会在多个 ads 任务中被作为源表使⽤。⽽在每个 ads 任务开发过程中,都需要为同⼀个 dws topic 做⼀次相同的 Flink 映射。

为了解决这种重复映射的开发⼯作,我们可以借助 Flink Catalog 功能,将映射表的元数据信息进⾏持久化存储,这样就可以在不同的任务中重复引⽤。具体使⽤⽅法如下(以平台的 DT Catalog 为例):

Catalog ⽬录维护

· 先在 DT Catalog 下创建⼀个名为 stream_warehouse 的 catalog

· 然后在该 catalog 下根据数仓层级或者业务域创建不同的 database

基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索

Flink 映射表创建

· ⽅式⼀:在⽬录中 hover database,根据引导通过配置化⽅式完成 Flink 表映射

基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索

· ⽅式⼆:在 IDE 中,通过 Create DDL 完成创建,注意要指定对应的 catalog.database 路径

CREATE TABLE stream_warehouse .dws .orders (
order_uid  BIGINT,
product_id BIGINT,
price      DECIMAL(32, 2),
order_time TIMESTAMP(3)
) WITH (
'connector ' = 'datagen '
);

FlinkSQL 任务开发

完成上面两个步骤,⼀张元数据持久化存储的 Flink 映射表就创建好了。我们在开发任务的时候,就可以直接通过 catalog.database.table 的⽅式,引⽤我们需要的表。

INSERT INTO stream_warehouse .ads_db .client_errors
SELECT
log_time,
request_line,
status_code,
size
FROM stream_warehouse .dws_db .server_logs

Demo 模式

学会了上⾯三种开发⽅式后,如果你还对 FlinkSQL 的开发逻辑⽐较陌⽣,那么建议你可以通过袋鼠云实时开发平台的代码模版中⼼去完成⼀个完整的任务开发。

在模版中⼼,我们提供了⼆⼗余种常⻅的业务场景及其对应的 FlinkSQL 代码逻辑,如各类窗⼝的写法、各类 Join 的写法等等,你可以根据真实的业务场景去套⽤模版,快速地完成任务开发。

基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索
基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索

总结

每种开发模式没有绝对的好坏之分,需要根据不同企业的实时计算场景和阶段,采⽤不同的开发模式,才能真正达到降本增效的目的。

· 当企业刚接触实时计算,数据开发⼈员对 FlinkSQL 熟悉度较低时,DEMO 模式是最好的选择;

· 当企业已经上⼿实时计算,但是任务量还不⼤时,脚本模式或者向导模式是不错的选择;

· 当企业实时计算达到⼀定规模,需要进⾏类似离线数仓的管理⽅式时,Catalog 模式是最优的选择。

《数栈产品白皮书》:https://www.dtstack.com/resources/1004?src=szsm

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001?src=szsm

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szbky

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术qun」,交流最新开源技术信息,qun号码:30537511,项目地址:https://github.com/DTStack文章来源地址https://www.toymoban.com/news/detail-521475.html

到了这里,关于基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 作业帮基于 DolphinScheduler 的数据开发平台实践

    摘要 随着任务数量、任务类型需求不断增长,对我们的数据开发平台提出了更高的要求。本文主要分享我们将调度引擎升级到 Apache DolphinScheduler 的实践经验,以及对数据开发平台的一些思考。 首先介绍下我们的大数据平台架构: 数据计算层承接了全公司的数据开发需求,负

    2024年02月03日
    浏览(32)
  • 【基于Django框架的在线教育平台开发-02】用户注册功能开发

    用户数据表如下所示: Field Type Extra id int Prime Key Auto Increment password varchar(128) last_login datetime(6) Allow Null is_superuser tinyint(1) username varchar(150) first_name varchar(150) last_name varchar(150) email varchar(254) is_staff tinyint(1) is_active tinyint(1) date_joined datetime(6) nick_name varchar(50) birthday date Allow Null

    2024年02月11日
    浏览(35)
  • 基于Unity平台开发Vision Pro应用

    VisionOS是苹果最新空间计算设备Vision Pro的操作系统。Unity开发人员可以利用现有的3D场景 以及为 visionOS 构建游戏或应用程序的资产。有关 visionOS 的更多信息,请参阅 Apple 的 visionOS 概述。 visionOS提供了几种不同的显示应用程序的模式:Windows、Volumes或Spaces。用户可以使用Wind

    2024年01月22日
    浏览(51)
  • 基于洞察漏洞管理平台进行二次开发

    之前搭建过由宜信安全部开源的漏洞管理平台-洞察(GitHub项目地址:https://github.com/creditease-sec)。但在实际的使用中发现存在不少需要优化的地方。后续宜信安全部也推出了洞察2.0版本,有很大的调整。然而不同企业的业务场景和需求都不同,很难做到面面俱到,对于定制开

    2024年02月16日
    浏览(32)
  • 基于stm32温湿度采集平台开发

    随着现代社会的高速发展,越来越多的科学技术被应用于农业生产领域。在温湿度大棚中对温湿度、二氧化碳浓度等外部参数的实时准确的测量和调节更是保证农业高效生产的重要前提。 本次课程设计中实现了一个基丁 STM32F103VET6的智能温湿度检测系统,目的是实现温湿度的

    2024年02月02日
    浏览(43)
  • 基于微信小程序的智慧旅游平台开发

    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了智慧旅游平台开发微信小程序的开发全过程。通过分析智慧旅游平台开发微信小程序管理的不足,创建了一个计算机管理智慧旅游平台开发微信小程序的方案。文章介绍了

    2024年02月21日
    浏览(39)
  • 基于 JMeter API 开发性能测试平台

    JMeter 是一个功能强大的性能测试工具,若开发一个性能测试平台,用它作为底层执行引擎在合适不过。如要使用其API,就不得不对JMeter 整个执行流程,常见的类有清楚的了解。 TestPlan  类:代表一个测试计划,它是性能测试的顶级元素。您可以使用它来设置全局的测试属性

    2024年02月14日
    浏览(32)
  • 基于 KubeSphere 的开源微服务开发平台 Pig 最佳实践

    作者:何昌涛,北京北大英华科技有限公司高级 Java 工程师,云原生爱好者。 近年来,为了满足越来越复杂的业务需求,我们从传统单体架构系统升级为微服务架构,就是把一个大型应用程序分割成可以独立部署的小型服务,每个服务之间都是松耦合的,通过 RPC 或者是 Re

    2024年02月02日
    浏览(41)
  • 基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发2-功能开发

    项目简介 :目标是开发一个跨平台的AI聊天和其他功能的客户端平台。目的来学习和了解Avalonia。将这个项目部署在openKylin 1.0 的系统上。 为什么使用Avalonia :之前已经了解了基于Avalonia的项目在国产麒麟系统中运行的案例。正是Avalonia在跨平台的出色表现,学习和了解Avalon

    2024年02月17日
    浏览(55)
  • 案例073:基于微信小程序的智慧旅游平台开发

    文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序运行软件:微信开发者 目录 前言 系统展示 后台模块的实现 用户信息管理 旅游景点管理 景区活动管理 小

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包