使用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…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...