【Starrocks 异常解决】-- [routine load] error when primary key size exceed the limit

目录

1、背景

1.1 创建 primary key table 

1.2 load 数据到 tmp 表

2、异常信息

3、解决


1、背景

1.1 创建 primary key table 

CREATE TABLE `ext`.`tmp_ods_user_u` (
  `id` string NOT NULL COMMENT "业务主键",
  `create_time` bigint NULL COMMENT "业务创建时间",
  `update_time` bigint NULL COMMENT "业务更新时间",
  `data_time` datetime NULL COMMENT "data_time yyyy-MM-dd HH:mm:ss.SSS"
  
) ENGINE=OLAP 
primary KEY(`id`)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`id`) BUCKETS 2 
PROPERTIES (
"compression" = "ZSTD",
"datacache.enable" = "true",
"enable_async_write_back" = "false",
"enable_persistent_index" = "true",
"persistent_index_type" = "CLOUD_NATIVE",
"replication_num" = "2",
"s
<think>嗯,用户正在询问如何通过shell脚本执行StarRocksROUTINELOAD任务,并且明确要求示例代码。根据提供的引用资料特别是引用[3],看到ROUTINELOAD主要用于从Kafka持续导入数据。用户似乎是个StarRocks运维或开发人员,正在尝试自动化数据导入流程。从语气判断,ta可能已经查阅过文档但需要具体实现参考,所以核心诉求是获得可直接运行的脚本模板。注意到引用[1]中提到starrocks.sh控制集群启停,这提示脚本执行时需确保集群在线。引用[3]强调ROUTINELOAD通过SQL控制任务状态,因此整个流程应该是:用shell脚本执行包含CREATEROUTINELOAD语句的SQL文件。需要特别说明三个关键点:1)SQL文件模板需包含Kafka访问配置2)shell脚本里要处理broker认证参数3)建议用curl调用FE的HTTP接口来执行SQL。最后要提醒监控任务状态,因为异步导入容易忽略错误反馈。示例脚本准备分三层:最简版无认证配置→包含SSL的扩展版→常用操作函数封装。考虑到用户可能需要调试,在注意事项里补充JSON响应解析和任务暂停/续传的操作按钮。</think> 根据引用内容,以下是使用Shell脚本执行StarRocks ROUTINE LOAD的详细步骤和示例代码: --- ### 一、ROUTINE LOAD脚本执行流程 1. **前置条件**: - 确保StarRocks集群已启动(参考[^1]) - Kafka集群版本 ≥ 0.10.0(参考[^3]) - 已准备好目标表和Kafka访问凭证 2. **核心步骤**: ```bash # 1. 连接到StarRocks FE节点 # 2. 执行ROUTINE LOAD创建语句 # 3. 监控任务状态 ``` --- ### 二、完整Shell脚本示例 ```bash #!/bin/bash # starrocks_routine_load.sh # 配置参数(根据实际情况修改) FE_HOST="127.0.0.1" FE_PORT="9030" USER="root" DB_NAME="your_db" KAFKA_BROKERS="kafka_host:9092" KAFKA_TOPIC="your_topic" TARGET_TABLE="target_table" # ROUTINE LOAD创建语句模板 ROUTINE_SQL=$(cat <<EOF CREATE ROUTINE LOAD ${DB_NAME}.load_${TARGET_TABLE} ON ${TARGET_TABLE} WITH PROPERTIES ( "desired_concurrent_number"="3", "max_error_number"="1000" ) FROM KAFKA ( "kafka_broker_list" = "${KAFKA_BROKERS}", "kafka_topic" = "${KAFKA_TOPIC}", "property.security.protocol" = "SASL_SSL", "property.sasl.mechanism" = "PLAIN", "property.sasl.username" = "kafka_user", "property.sasl.password" = "kafka_passwd" ) COLUMNS(col1, col2, col3=now()); EOF ) # 通过MySQL协议执行命令 mysql -h${FE_HOST} -P${FE_PORT} -u${USER} -e "USE ${DB_NAME}; ${ROUTINE_SQL}" # 检查任务状态(5秒后) sleep 5 echo -e "\n### 任务状态检查 ###" mysql -h${FE_HOST} -P${FE_PORT} -u${USER} -e "SHOW ROUTINE LOAD FOR ${DB_NAME}.load_${TARGET_TABLE}\G" ``` --- ### 三、关键参数说明 1. **Kafka认证配置**(参考[^3]): ```sql "property.security.protocol" = "SASL_SSL" # 安全协议 "property.sasl.mechanism" = "PLAIN" # 认证机制 ``` 2. **容错参数**: ```sql "max_error_number"="1000" # 最大容忍错误数 "desired_concurrent_number"="3" # 并发消费线程数 ``` 3. **数据映射**: ```sql COLUMNS(col1, col2, col3=now()) # 目标表字段映射 ``` --- ### 四、操作指南 1. **保存脚本**:将内容保存为`starrocks_routine_load.sh` 2. **授权执行**: ```bash chmod +x starrocks_routine_load.sh ./starrocks_routine_load.sh ``` 3. **验证结果**: ```sql SHOW ROUTINE LOAD; -- 查看所有任务 STOP ROUTINE LOAD load_target_table; -- 停止任务 ``` --- ### 五、注意事项 1. **集群状态**:执行前确保用`starrocks.sh status`验证服务状态[^1] 2. **错误处理**:监控`State`和`ErrorLogPaths`字段 3. **权限要求**:执行账户需有`ROUTINE LOAD`操作权限 4. **SSL支持**:Kafka若启用SSL需在FE配置证书[^2] > 注:实际部署时建议将敏感参数存为环境变量,避免密码硬编码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

oo寻梦in记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值