Dinky项目中的Flink作业开发全指南

Dinky项目中的Flink作业开发全指南

dinky Dinky is an out-of-the-box, one-stop, real-time computing platform dedicated to the construction and practice of Unified Streaming & Batch and Unified Data Lake & Data Warehouse. Based on Apache Flink, Dinky provides the ability to connect many big data frameworks including OLAP and Data Lake. dinky 项目地址: https://gitcode.com/gh_mirrors/di/dinky

前言

作为一款强大的Flink SQL开发平台,Dinky为开发者提供了完整的Flink作业开发体验。本文将全面介绍如何在Dinky中开发Flink SQL和Flink Jar作业,帮助开发者快速上手并高效完成Flink作业开发。

基础作业配置详解

作业配置面板

在Dinky中开发Flink作业时,首先需要配置基础参数。这些配置决定了作业的运行方式和资源分配:

  1. 执行模式(必填):支持多种运行模式,包括:

    • Local:本地模式,使用内置MiniCluster
    • Standalone:独立集群模式
    • Yarn Session/Yarn Prejob/Yarn Application:Yarn集群的不同部署方式
    • K8s Application/K8s Session:Kubernetes集群部署
  2. Flink集群(必填):根据选择的执行模式,需要配置对应的集群实例或集群配置

  3. FlinkSQL环境(可选):可配置执行环境或Catalog

  4. 任务并行度(必填):默认为1,根据业务需求调整

  5. 全局变量(可选):支持以${}语法调用全局变量

  6. 批模式(可选):启用Batch Mode处理批作业

  7. SavePoint策略(可选):配置作业恢复策略

  8. 报警组(可选):配置作业告警通知

  9. 其他配置(可选):可添加额外的Flink配置参数

本地模式特别说明

Local模式使用Dinky内置的Flink MiniCluster运行作业,适合快速测试和体验。但需要注意:

  • 资源有限,不适合生产环境
  • 仅推荐用于临时测试或功能验证
  • 生产环境应使用Standalone、Yarn或K8s模式

配置参数扩展

如果默认提供的Flink配置参数不能满足需求,可以通过以下方式扩展:

  1. 修改dinky-loader/FlinkConfClass文件,添加参数对应的全路径类名
  2. 在注册中心的文档管理中新增Flink参数类型文档

作业版本管理

Dinky提供了完善的版本控制功能:

  1. 版本历史:每次发布都会创建历史版本记录
  2. 代码差异对比:可查看当前版本与历史版本的代码差异
  3. 版本回滚:支持回退到任意历史版本

这些功能为团队协作和问题排查提供了便利,确保开发过程可追溯。

作业执行与预览

作业执行

点击"执行"按钮提交作业时需注意:

  • 提交为同步操作,控制台会实时打印执行日志
  • 不要将SELECT语句作为作业提交,应使用预览功能
  • 作业失败时可通过日志定位问题

数据预览功能

Dinky的数据预览功能极大提升了开发效率:

  1. 配置选项

    • 打印流:返回ChangeLog信息
    • 最大行数:控制返回数据量
    • 自动停止:达到最大行数后自动停止
    • SinkMock:避免向线上环境写入测试数据
  2. 使用条件

    • 执行模式必须是Local、Standalone或Session模式
    • 未开启MockSink时只能提交单个SELECT/SHOW/DESC语句
    • 开启MockSink后可提交Insert语句
    • 作业必须成功提交并返回JID
  3. 结果查看

    • 提交成功后切换到"结果"选项卡
    • 点击"获取最新数据"查看执行结果

工具栏功能详解

Dinky开发界面提供了丰富的工具栏功能:

| 功能项 | 说明 | |--------|------| | 保存 | 保存当前作业 | | DAG | 生成Flink SQL流程图 | | 检查 | SQL语法校验 | | 发布 | 发布任务(发布后不可修改) | | 推送 | 推送至DolphinScheduler(需满足条件) | | 运维 | 跳转到运维页面(仅运行中的作业显示) | | 运行 | 提交作业 | | 预览 | 预览作业数据 |

Flink SQL作业开发示例

下面是一个完整的Flink SQL作业示例:

-- 创建源表(使用datagen连接器生成测试数据)
CREATE TABLE datagen_source (
    id BIGINT,
    name STRING
) WITH ('connector' = 'datagen');

-- 创建结果表(使用blackhole连接器丢弃数据)
CREATE TABLE blackhole_sink (
    id BIGINT,
    name STRING
) WITH ('connector' = 'blackhole');

-- 将源表数据插入结果表
INSERT INTO blackhole_sink
SELECT id, name
FROM datagen_source;

提交后可在运维中心查看作业运行状态,状态为"Running"表示运行成功。

Flink Jar作业开发

Dinky扩展了Flink SQL语法,支持直接提交Jar作业:

基本语法

EXECUTE JAR WITH (
    'uri'='<jar_path>.jar',       -- jar文件路径(必填)
    'main-class'='<main_class>',  -- 主类(必填)
    'args'='<args>',             -- 参数(可选)
    'parallelism'='<parallelism>' -- 并行度(可选)
);

示例1:基本用法

-- 设置检查点间隔
set 'execution.checkpointing.interval'='21 s';

-- 提交Jar作业
EXECUTE JAR WITH (
    'uri'='rs:/jar/flink/demo/SocketWindowWordCount.jar',
    'main-class'='org.apache.flink.streaming.examples.socket',
    'args'=' --hostname localhost ',
    'parallelism'=''
);

示例2:Paimon作业

EXECUTE JAR WITH (
    'uri'='rs:/paimon-flink-action-0.7.0-incubating.jar',
    'main-class'='org.apache.paimon.flink.action.FlinkActions',
    'args'='compact --warehouse hdfs:///tmp/paimon --database default --table use_be_hours_2'
);

注意事项

  1. 资源路径使用rs协议,需确保资源中心存在相应资源
  2. 主类参数不能为空
  3. 注意args参数中的空格处理
  4. 支持通过rs协议访问S3、HDFS、LOCAL等存储系统

总结

Dinky为Flink作业开发提供了全方位的支持,从基础的SQL开发到复杂的Jar作业提交,从本地测试到生产部署,都提供了简单易用的操作界面和强大的功能支持。通过本文的介绍,开发者可以快速掌握Dinky中的Flink作业开发方法,提升开发效率。

dinky Dinky is an out-of-the-box, one-stop, real-time computing platform dedicated to the construction and practice of Unified Streaming & Batch and Unified Data Lake & Data Warehouse. Based on Apache Flink, Dinky provides the ability to connect many big data frameworks including OLAP and Data Lake. dinky 项目地址: https://gitcode.com/gh_mirrors/di/dinky

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞿蔚英Wynne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值