当前位置: 首页 > news >正文

FLINK SQL 任务参数

在Flink SQL任务中,参数配置对于任务的性能和稳定性至关重要。以下是对运行时参数、优化器参数和表参数的详细解析:

一、运行时参数

运行时参数主要影响Flink作业在执行过程中的行为。以下是一些关键的运行时参数:

  1. 并行度(Parallelism):
    • 决定了Flink作业可以同时处理的数据量。
    • 通过增加并行度,可以加快数据处理速度,但同时也会增加资源消耗。
    • 应根据集群规模和数据量来合理设置并行度,避免设置过高导致资源竞争和调度延迟。
  2. 状态后端(State Backend):
    • Flink使用状态后端来存储和管理作业的状态。
    • 选择合适的状态后端(如RocksDB)可以提高状态访问性能。
  3. 检查点(Checkpoint):
    • Flink用于实现容错的一种机制。
    • 合理配置检查点间隔和模式可以提高作业的可靠性,但也会增加资源消耗。
  4. 缓冲区大小(Buffer Size):
    • Flink SQL查询可能涉及与外部系统的数据交换,这时缓冲区的设置就变得很重要。
    • 应根据数据的大小和交换频率来调整缓冲区大小,以减少数据传输和内存消耗。
  5. 异步查询关联:
    • 包括缓存容量和异步超时时间等参数。
  6. 微批处理:
    • 批量访问或更新一次状态,减少对状态的访问次数和时间。
    • 相关参数如table.exec.mini-batch.allow-latency和table.exec.mini-batch.size。
  7. 键值状态保留时长:
    • 如distinct、groupby等运算会用到状态,通过设置无界流中的state.ttl,可以删除一段时间未被访问或更新的状态。
  8. 算子并行度:
    • 空闲数据源闲置检测,保证时间窗口可以正常推进。

二、优化器参数

优化器参数帮助Flink生成更优的执行计划,以下是一些关键的优化器参数:

  1. 2阶段聚合(Two-Stage Aggregation):
    • 在数据倾斜的场景下,先聚合再传递给下游,以减少网络传输和数据倾斜的可能性。
  2. 分桶聚合(Bucket Aggregation):
    • 适用于去重聚合场景,如count(distinct userId)。
    • 将数据的key先打散到多个桶进行聚合,再对分桶中的数据最后聚合。
  3. 微批处理(Mini-Batch Processing):
    • 在GroupAggFunction处理每一条输入数据时,通过微批处理可以减少对状态的访问次数。
  4. 去重场景优化:
    • 如bitmap去重复用优化,通过Filter子句来实现去重场景BitMap复用。

三、表参数

表参数主要影响Flink SQL中表的定义和行为。以下是一些关键的表参数:

  1. 连接器参数:
    • 如数据源和数据目标的连接器参数,这些参数定义了如何连接到外部系统以及数据的格式和传输方式。
  2. 分区参数:
    • 定义了表的分区策略,如分区键、分区数量等。
  3. 格式参数:
    • 定义了数据的存储格式,如Avro、Parquet、CSV等。
  4. 主键和索引:
    • 定义了表的主键和索引,这些参数对于查询性能和数据一致性至关重要。
  5. table.exec.sink.keyed-shuffle:
    • 为解决向带有主键的表中写入数据时出现的分布式乱序问题,可以通过此参数来进行Hash Shuffle操作。

四、配置示例

以下是一个简单的Flink SQL任务参数配置示例:

-- 运行时参数配置  
SET parallelism = 4;  
SET state.backend = rocksdb;  
SET checkpoint.interval = 10000;  -- 检查点间隔,单位为毫秒  
SET taskmanager.memory.process.size = 4096m;  -- TaskManager进程内存大小  -- 优化器参数配置  
SET table.exec.mini-batch.enabled = true;  
SET table.exec.mini-batch.allow-latency = 2s;  
SET table.exec.mini-batch.size = 100;  -- 微批处理大小  -- 表参数配置  
CREATE TABLE source_table (  id INT,  name STRING,  age INT,  PRIMARY KEY (id) NOT ENFORCED  
) WITH (  'connector' = 'kafka',  'topic' = 'source_topic',  'properties.bootstrap.servers' = 'localhost:9092',  'format' = 'json'  
);  CREATE TABLE target_table (  id INT,  total_age BIGINT,  PRIMARY KEY (id) NOT ENFORCED  
) WITH (  'connector' = 'jdbc',  'url' = 'jdbc:mysql://localhost:3306/testdb',  'table-name' = 'target_table',  'username' = 'root',  'password' = 'password'  
);

请注意,以上配置仅为示例,实际配置应根据具体需求和场景进行调整。在配置参数时,务必参考Flink官方文档和最佳实践,以确保配置的准确性和有效性。

http://www.lryc.cn/news/465540.html

相关文章:

  • HCIP——以太网交换安全(四)DHCP Snooping
  • k8s worker 节点关机 sts 管理的 pod 无法迁移
  • 排序04 视频播放建模
  • 【常见大模型API调用】第三篇:清华智谱--智谱AI
  • LayerSkip – Meta推出加速大型语言模型推理过程的技术
  • 环境变量与本地变量(Linux)
  • 【完-网络安全】Windows防火墙及出入站规则
  • Vue学习记录之十七 css中样式穿透及新特征介绍
  • Nature 正刊丨海洋涡旋中常见的地下热浪和寒潮
  • 代码随想录算法训练营第六十二天| prim算法,kruskal算法
  • Newstar_week1_week2_wp
  • 今天我们研究一段代码(异或位运算)
  • pycharm中使用ctrl+鼠标滚轮改变字体大小
  • 【算法-动态规划】打家劫舍专题
  • 关于技术管理者的一些思考
  • Alpha-CLIP: A CLIP Model Focusing on Wherever You Want CVPR 2024
  • Golang | Leetcode Golang题解之第495题提莫攻击
  • 04 go语言(golang) - 变量和赋值过程
  • 语言/图像/视频模型一网打尽!BigModel大模型开放平台助力开发者轻松打造AI新应用!
  • Go语言Linux环境搭建以编写第一个Go程序
  • 使用 Go 构建一个最小的 API 应用
  • MySQL 日常维护指南:常见任务、频率及问题解决
  • oracle ORA-24920:列大小对于客户机过大
  • 使用 Docker compose 部署 Nacos(达梦数据库)
  • 人工智能 | 阿里通义千问大模型
  • Windows环境下Qt Creator调试模式下qDebug输出中文乱码问题
  • java防止表单重复提交的注解@RepeatSubmit
  • HTTP快速入门
  • Nacos简介
  • 基于深度学习的稳健的模型推理与不确定性建模