使用StreamLold写入 Starrocks报错:Caused by org
问题描述
使用StreamLoad写入Starrocks报错,报这个错误:Caused by: org.apache.http.ProtocolException: Content-Length header already present
代码案例
引入依赖
<!-- Starrocks使用StreamLoad发送Http请求 --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version></dependency>
具体demo
package com.song.starrocks;import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpHeaders;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultRedirectStrategy;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.UUID;public class StarRocksStreamLoad {private final static String STARROCKS_HOST = "localhost";private final static String STARROCKS_DB = "starrocks_demo";private final static String STARROCKS_TABLE = "bitmap02";private final static String STARROCKS_USER = "root";private final static String STARROCKS_PASSWORD = "";private final static int STARROCKS_HTTP_PORT = 8038;public void sendData(String content) throws Exception {//String yyyyy = "id,name,age,age=to_bitmap(age)";String yyyyy = "id,process_time,bkey,bvalue,bvalue=to_bitmap(bvalue),create_time";final String loadUrl = String.format("http://%s:%s/api/%s/%s/_stream_load",STARROCKS_HOST,STARROCKS_HTTP_PORT,STARROCKS_DB,STARROCKS_TABLE);final HttpClientBuilder httpClientBuilder = null;int TIMEOUT = 3000;try (CloseableHttpClient client = httpClientBuilder.build()) {HttpPut put = new HttpPut(loadUrl);RequestConfig build = RequestConfig.custom().setAuthenticationEnabled(true).setCircularRedirectsAllowed(true).setRedirectsEnabled(true).setRelativeRedirectsAllowed(true).setExpectContinueEnabled(true).setConnectTimeout(30000).setConnectionRequestTimeout(TIMEOUT).setSocketTimeout(TIMEOUT).build();put.setConfig(build);StringEntity entity = new StringEntity(content, "UTF-8");put.setHeader(HttpHeaders.EXPECT, "100-continue");put.setHeader(HttpHeaders.AUTHORIZATION, basicAuthHeader(STARROCKS_USER, STARROCKS_PASSWORD));put.setHeader("columns", yyyyy);put.setHeader("column_separator", "\t");put.setHeader("max_filter_ratio", "0.2");put.setHeader("label", UUID.randomUUID().toString());put.setEntity(entity);try (CloseableHttpResponse response = client.execute(put)) {String loadResult = "";if (response.getEntity() != null) {loadResult = EntityUtils.toString(response.getEntity());}final int statusCode = response.getStatusLine().getStatusCode();// statusCode 200 just indicates that starrocks be service is ok, not stream load// you should see the output content to find whether stream load is successif (statusCode != 200) {throw new IOException(String.format("Stream load failed, statusCode=%s load result=%s", statusCode, loadResult));}System.out.println("data {}" + loadResult);}}}private String basicAuthHeader(String username, String password) {final String tobeEncode = username + ":" + password;byte[] encoded = Base64.encodeBase64(tobeEncode.getBytes(StandardCharsets.UTF_8));return "Basic " + new String(encoded);}}
测试类
注意:因为ExtRoaringBitmap是自己封装的,所以需要换成bitmap或者RortingBitmap
@Testpublic void testBitMapWriteStarrocks() throws Exception {ExtRoaringBitmap extRoaringBitmap = new ExtRoaringBitmap();extRoaringBitmap.set(111111);LongIterator longIterator = extRoaringBitmap.longIterator();StringBuilder stringBuilder = new StringBuilder();while (longIterator.hasNext()) {// 生成idLong id = 100;// 获取ExtRoaringBitmap中的具体数据,也就是获取long类型的offsetlong bitmapValue = longIterator.next();Date date = new Date();String currentDate = sdf.format(date);String bitmapKey = "张三" + id;String oneRow = id + "\t" + currentDate + "\t" + bitmapKey + "\t" + bitmapValue + "\t" + currentDate + "\n";stringBuilder.append(oneRow);}stringBuilder.deleteCharAt(stringBuilder.length() - 1);String loadData = stringBuilder.toString();System.out.println("loadData :{} " + loadData);StarRocksStreamLoad starrocksStreamLoad = new StarRocksStreamLoad();starrocksStreamLoad.sendData(loadData);}
报错截图

分析错误原因
因为代码执行是在一个父项目中调用的子项目,把写入Starrocks这块封装为一个工具类,通过其他的项目来调用, 如果个给Starrocks单独一个项目的话,是可以正常执行的 , 一旦放入到整个项目中,通过其他的项目来进行调用,就会报错,经过排查 ,错误的原因是因为父项目中也有用到依赖httpclient这个依赖,但是版本不是4.5.3的,是其他的版本 ,虽然我子项目中有这个httpclient4.5.3的依赖,但是在项目启动的时候,父项目的依赖把子项目的依赖覆盖了,导致无法使用httpclient4.5.3的依赖,所以项目一直报Caused by: org.apache.http.ProtocolException: Content-Length header already present。
解决办法
1.在idea中安装maven的插件:Maven Helper ,通过这个可以查到里面所有的依赖;
2.在父项目中也添加这个httpclient4.5.3的依赖就可以正常写入数据了;
相关文章:
使用StreamLold写入 Starrocks报错:Caused by org
问题描述 使用StreamLoad写入Starrocks报错,报这个错误:Caused by: org.apache.http.ProtocolException: Content-Length header already present 代码案例 引入依赖 <!-- Starrocks使用StreamLoad发送Http请求 --><dependency><groupId>or…...
WX1860- ngbe-1.2.5 xdp程序在路由模式下,使用iperf工具测试数据包不转发,用jmeter可以
本地验证时重定向iperf包有出现calltrace错误,经推断,系统PAGE_SIZE<8k时可能出现(getconf PAGE_SIZE指令可查看),按下图将ngbe_main.c的2350行ngbe_rx_bufsz改为ngbe_rx_pg_size可修复。其次,需要将加载…...
PHPStudy 安装tp8 php8.2.9 安装XDbug、redis扩展
一、PhpStudy升级PHP版本,安装PHP8.2操作步骤 1.1、官网下载最新的php版本 打开Windows版的官网下载,地址:https://windows.php.net/download/ 页面上有不同的PHP版本,这里我们下载的是64位nts版的PHP8.2.9。 1.2、解压下载的文…...
结构体指针和结构体数组指针
结构体指针和结构体数组指针是不同的类型。 结构体指针定义:Student *stu 结构体指针的步长是一个结构体的大小; 结构体数组指针定义:Student (*stu)[] 结构体数组指针的步长是整个结构体数组的大小。 例程: #include <stdio…...
libdrm全解析二十 —— 源码全解析(17)
接前一篇文章:libdrm全解析十九 —— 源码全解析(16) 本文参考以下博文: DRM 驱动程序开发(VKMS) 特此致谢! 本文继续对include/drm/drm.h中实际功能宏定义进行讲解。 29. DRM_IOCTL_SET_MAS…...
基于docker搭建owncloud Harbor 构建镜像
环境介绍:ContenOS7.9 docker17.12.1-ce 使用mysql:5.7和 owncloud 镜像,构建一个个人网盘。 docker pull owncloud #拉取镜像 docker pull mysql5.7 创建容器 docker run --name owncloud-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORDroot …...
往Buildroot中增加Qt项目
前言 目的:应用开发时最初是没有和buildroot中一起编译时,后面应用程序写的差不多时,同事问我怎么把应用程序打包到文件系统中,然后发布时跟随文件系统一起发布,并且增加打包启动脚本。所以本文在已经可以单独编译的基…...
C#-Tolewer和ToUpper的使用
目录 简介: 好处: 过程: 总结: 简介: 字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。 ToLower和ToUpper是字符串处理函数,用于将字符中的英文字母转换为小…...
RabbitMQ集群搭建和测试总结_亲测
RabbiMQ简介 RabbitMQ是用Erlang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡。 RabbitMQ模式 RabbitMQ模式大概分为以下三种: (1)单一模式。 (2)普通模式(默认的集群模式)。 (3)镜像模式(把需要的队列…...
SQLSTATE[IMSSP]: The active result for the query contains no fields.
我的是SQL server 报错场景,代码: $psendmx_sql"SET IDENTITY_INSERT PSENDMX ON;INSERT INTO psendmx (DJBH,MIBH,MXBH,SPDM,GG1DM,GG2DM,SL,SL_2,CKJ,ZK,DJ,DJ_1,JE,HH) VALUES {$mx_values};SET IDENTITY_INSERT PSENDMX OFF;"; $a$db_er…...
在Flutter应用内部实现分屏功能
前言 这一次被要求实现屏幕上同时展示两个页面,并且两个页面的逻辑,功能互不影响,通俗一点讲就是在Flutter内部实现一个类似于分屏的功能,这可难不倒我。 方法 要在 Flutter 中实现一个屏幕的上半部分和下半部分展示不同的页面…...
Docker常用操作命令(二)
Docker常用操作命令(二) 11、进入容器 docker exec -it 容器名称or容器ID /bin/bash [rootzch01 ~]# docker exec -it 973ff3caff19 /bin/bash 退出容器 root973ff3caff19:/# exit 12、查看容器中的进程 docker top 容器名称or容器ID [rootzch01 ~]# docker top 973ff3c…...
vue3 tailwindcss的使用
首先安装依赖: npm install -D tailwindcsslatest postcsslatest autoprefixerlatestnpm i -D unocss 然后vite.config.ts中 引入 import Unocss from unocss/viteexport default defineConfig({plugins: [Unocss(),],})终端执行: npx tailwindcss in…...
redis 基础篇(redis 理解)
目录 redis 特性介绍 redis 的一些特性(优点) 1. 在内存中存储数据 2. 可编程的 3. 可扩展 4. 持久化 5. 支持集群 6. 高可用 redis 的应用场景 数据库 作缓存 会话存储 作消息队列 redis 不适合做的事情 redis 介绍 redis 客户端形态 命…...
C++系列-函数重载
C系列-函数重载 函数重载函数重载的条件函数重载注意事项引用作为重载函数重载遇到默认参数 函数重载 函数名可以相同, 提高复用性 函数重载的条件 同一个作用域下函数名相同函数参数不同 – 参数个数不同 – 参数顺序不同 – 参数类型不同不可以使用返回值作为重…...
Linux scp命令
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。 scp [可选参数] file_source file_target 参数说明: -1: 强制scp命令使用协议ss…...
vue 简单实验 v-bind 变量与html属性绑定
1.代码 <script src"https://unpkg.com/vuenext" rel"external nofollow" ></script> <div id"bind-attribute"><span v-bind:title"message">鼠标悬停几秒钟查看此处动态绑定的提示信息!</sp…...
114.(cesium篇)cesium去掉时间轴并用按钮控制运动
地图之家总目录(订阅之前必须详细了解该博客) 完整代码工程包下载,运行如有问题,可“私信”博主。效果如下所示: cesium去掉时间轴并用按钮控制运动 下面献上完整代码,代码重要位置会做相应解释 <html lang...
2023年清洁能源与智能电网国际会议(CCESG 2023)
会议简介 Brief Introduction 2023年清洁能源与智能电网国际会议(CCESG 2023) 会议时间:2023年 召开地点:中国南宁 大会官网:CCESG 2023-2023 International Joint Conference on Clean Energy and Smart Grid 由IASED主办, CoreS…...
论基于云原生数据库的企业信息系统架构设计
基于云原生数据库的企业架构随着云原生技术的全面普及,企业信息系统对架构的弹性伸缩、高可靠性、资源高效利用及敏捷迭代能力提出了更高要求。传统数据库存在的存储与计算耦合、扩展能力受限、运维成本高、故障恢复慢等痛点,已难以适配现代化企业的业务…...
北光恒电:安捷伦6812B/6813B电源不开机、输出不正常故障排查
安捷伦6812B/6813B电源作为高精度交流电源/功率分析仪,广泛应用于电源测试、UPS测试、航空电子ATE等场景,凭借稳定性能成为实验室和生产线上的核心设备。长期使用或操作不当,不开机、输出不正常等故障频发,影响测试效率。常见故障…...
告别混乱!在C#/C++混合项目中用OpenCasCade 7.7.0搞定三维坐标显示(附完整代码)
工业级三维坐标可视化实战:OpenCasCade混合开发深度解析 第一次在CAD软件中看到那个小小的三色坐标轴时,我完全没意识到它背后隐藏着如此复杂的工程逻辑。直到自己动手在C#/C混合环境中实现OpenCasCade的坐标显示系统,才真正理解工业级三维可…...
录音总结会议纪要推荐,零基础新手避坑可直接上手指南
这是专为零基础新手整理的2026年录音转会议纪要避坑指南,适配喜欢尝试效率工具、想借助AI节省整理时间的朋友,所有推荐均按实际场景适配度排序,内容简洁易懂,看完可直接上手,无需自行试错踩坑。很多新手接触录音转会议…...
构建内容生成应用时借助Taotoken灵活选用不同风格模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 构建内容生成应用时借助Taotoken灵活选用不同风格模型 在内容创作与营销文案生成的实际应用中,单一模型往往难以满足多…...
SaySo 语音识别相关技术解析,从语音输入到可用文本
摘要语音识别正在从一个独立功能,变成越来越多桌面应用里的基础交互能力。对于 SaySo 这类 PC 端语音工具来说,语音识别不仅仅是把声音转成文字,更关键的是如何在桌面工作流中做到识别准确、响应及时、体验稳定。本文将围绕 SaySo 的语音识别…...
代码随想录算法训练营第六十天|Bellman_ford 队列优化算法、Bellman_ford之判断负权回路、bellman_ford之单源有限最短路
参考文章均来自代码随想录 Bellman_ford 队列优化算法 参考文章链接 对第 59天中的题目进行优化 详细见参考文章推理步骤 还是用邻接表 #include <iostream> #include <vector> #include <queue> #include <list> #include <climits> using …...
从零开始:3步掌握MifareOneTool,轻松玩转NFC卡片管理
从零开始:3步掌握MifareOneTool,轻松玩转NFC卡片管理 【免费下载链接】MifareOneTool A GUI Mifare Classic tool on Windows(停工/最新版v1.7.0) 项目地址: https://gitcode.com/gh_mirrors/mi/MifareOneTool 你是否曾被复…...
答辩前一天才慌?paperxie 帮我把毕业论文 PPT 的 “地狱副本” 打成了 “新手教程”
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 距离本科毕业论文答辩只剩 3 天,我对着空白的 PPT 页面,第 10 次删掉了刚写好的标题。 导师说我的内…...
企业级应用如何利用Taotoken的容灾与路由能力保障AI服务高可用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业级应用如何利用Taotoken的容灾与路由能力保障AI服务高可用 对于将大模型能力深度集成到关键业务流程的企业应用而言࿰…...
