整合griffin遇到的坑——Spark无法写入ES

开源数据中台实战:从架构设计到核心组件部署指南 数据中台是企业数字化转型的核心基础设施,旨在解决数据孤岛问题,通过统一的数据整合、治理与服务化,构建可复用的数据能力中心。其技术原理通常基于分层架构,涵盖数据采集、存储计算、治理资产与服务应用等层面,以实现数据资产的价值最大化。在工程实践中,利用开源技术栈是构建高效、灵活且成本可控的数据中台的关键路径,例如采用DataX进行高效数据集成,或部署DolphinScheduler实现可视化任务调度。这些技术方案能有效支撑实时数据分析、用户画像构建等典型应用场景,最终帮助企业快速落地符合自身业务需求的、可演进的数 阅读详情

前言

最近准备对数据质量进行监控,选定的工具是开源的Apache Griffin,由于文档稀缺,加上griffin本身使用的组件众多,期间采坑不少,我们将打好的包measure-0.6.0-SNAPSHOT.jar放到集群中,通过livy调用spark命令执行任务,过程还是相对繁琐的。本文就spark任务结果写入elasticsearch遇到异常做个小结。

异常

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/impl/client/HttpClients

这个好解决,加上httpClient依赖就好。

		<dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.2</version>
        </dependency>

接下来又遇到了。

java.lang.NoSuchFieldError: INSTANCE
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
    at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:966)
    at org.apache.griffin.measure.utils.HttpUtil$.doHttpRequest(HttpUtil.scala:50)
    at org.apache.griffin.measure.sink.ElasticSearchSink$$anonfun$org$apache$griffin$measure$sink$ElasticSearchSink$$func$1$1.apply$mcZ$sp(ElasticSearchSink.scala:69)
    at org.apache.griffin.measure.sink.ElasticSearchSink$$anonfun$org$apache$griffin$measure$sink$ElasticSearchSink$$func$1$1.apply(ElasticSearchSink.scala:69)
    at org.apache.griffin.measure.sink.ElasticSearchSink$$anonfun$org$apache$griffin$measure$sink$ElasticSearchSink$$func$1$1.apply(ElasticSearchSink.scala:69)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
    at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
19/07/09 19:59:26 ERROR yarn.ApplicationMaster: RECEIVED SIGNAL TERM

根据java.lang.NoSuchFieldError: INSTANCE搜索,很多会文章会提升你更换httpclient 和 httpcore这两个包,然后我从最新版本往下换,换到4.3的版本,确实HttpClientBuilder.build 异常的行数变了,最开始是966,说明更换的jar包是被使用了,这个让我欣喜也迷惑了我很久。因为无论哪个版本NoSuchFieldError: INSTANCE这个问题都存在。
只有另外想办法了,之后考虑换个环境,远程集群不行,本地调用下这个httpclient测试下试试,然后写了个简单的测试用例。

def httpResult(): Unit = {
    // 集群的异常就client的创建中
    val client = HttpClientBuilder.create.build
    val dataMap = Map[String, String](("name","test2"));
    val data = JsonUtil.toJson(dataMap)
    // http request
    val params = Map[String, Object]()
    val header = Map[String, Object](("Content-Type", "application/json"))
    // HttpUtil工具就是创建并执行一个HttpPost
    val result = HttpUtil.doHttpRequest("http://sit-01:9200/griffin/accuracy","post", params, header, data)
    print(result)
  }

执行发现client的创建并没有异常,并且result返回true,在远程es中也能查到这条name的记录。于是排除es本身的问题和jar包版本的问题。百思不得其解,但是能肯定是jar包出了问题。如果集群没有采用httpclient的jar包,那么异常行数为什么会变,如果采用了为什么一直是那个异常。spark集群会不会有自带低级的httpclient版本导致冲突了。想到这,果断看了下spark2目录下的jars。

[root@sit-01 jars]# ls |grep http
commons-httpclient-3.1.jar
httpcore-4.4.8.jar

集群中spark2是cdh安装的2.3.1的版本,发现里面没有httpclient的包。于是突发奇想的在集群中添加一个httpclient-4.5.2.jar

wget https://repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.jar

果然,查看yarn管理界面,job能够正常执行,结果写入es了。

小结

如果学习或者工作中有使用一些新的东西,期间会经常遇到各类环境,版本问题,语法的问题。个人觉得还是要珍惜这些机会,如果能做出点东西是很有成就感的。找点有挑战的事情,这个过程也能加快自己的成长,毕竟搬砖多了也没意思。

【信息科学与工程学】【数据科学】数据科学领域-第十一篇 数据集成算法01 ​​降低维护成本​​:通过抽象通用流程(如),当需要修改故障注入逻辑(如更换混沌工具)时,只需修改一处代码,无需修改所有测试用例;​​提升扩展性​​:通过参数化故障场景(如),可快速生成新的故障用例(如针对新服务的延迟故障),适应系统迭代需求;​​增强场景真实性​​:通过组合混沌操作(如),模拟真实生产环境中的复杂故障链(如“网络延迟+服务宕机”),更准确地验证系统韧性;​​提高分析效率​​:通过自动化结果分析(如),快速获取MTTR、错误率等关键指标,减少人工分析时间。 阅读详情

相关推荐

【信息科学与工程学】【数据中心】 第十五篇 智算中心DaaS数据消费场景02

智算中心DaaS数据共享场景的分级分类是一个复杂的系统工程,需要从技术、安全、合规、治理、运营等多个维度进行综合考虑。本分级分类体系为不同场景下的数据共享提供了详细的指导,包括安全分级、共享模式、技术架构、合规治理等方面。在实施数据共享平台时,应结合自身业务需求、技术能力和资源情况,选择适合的共享模式和实施路径。同时,要高度重视数据安全和隐私保护,采用先进的技术和管理手段,确保数据共享的安全可控。

weixin_49199313的博客 1万+

spark对接elasticsearch遇到的坑

问题:pushdown是官网强烈推荐的,不过我怎么知道他将spark sql转成了什么dsl语句呢?也就是说,我怎么知道谓词下推有没有成功?问题:我从host1中读取es的数据,要写入host2中,怎么做呢?问题:我不要es自动生成_id,我自己指定。问题:出现了和hadoop相关的问题。解决:读取和写入使用不同的配置。问题:解析none值有问题。...

weixin_43810802的博客 2170

CODESYS EtherCAT通讯断了怎么办?手把手教你用ST语言写状态监测程序(附完整代码)

本文详细解析了CODESYS平台下EtherCAT通讯中断的故障排查与恢复方法,通过ST语言编写状态监测程序实现链路监测、故障隔离和伺服恢复。文章包含完整代码示例,帮助工程师快速诊断EtherCAT网络问题,提升工业自动化设备的运行稳定性。

weixin_30919571的博客 208

java.lang.NoClassDefFoundError: org/apache/http/impl/client/HttpClients

java.lang.NoClassDefFoundError: org/apache/http/impl/client/HttpClients 解决方法: Changing the httpclient dependency version from 4.2.5 to 4.3.3 fixes this problem as this class doesn't exist until vers

旋转的紫色星系 1万+

【域控制器EMC】域控制器EMC设计总结

汇总项目设计当中关于EMC的设计要点,主要从原理设计、Layout、结构、外设部分总结。满足要求的器件和合理的电路能降低电磁干扰;正确的布局、接地、信号路径、屏蔽等可以减少电磁辐射。结构件设计也会对EMC性能产生影响。

weixin_42098658的博客 1258

别再为环保数采仪通讯发愁!手把手教你用MCGS触摸屏+4G模块发送HJ212报文

本文详细介绍了如何使用MCGS触摸屏配合4G模块高效发送HJ212标准报文,解决工业环保监测中的数据采集与传输难题。从硬件连接到软件配置,再到报文组装与发送策略,提供全流程实用指南,特别针对4G网络环境下的特殊设置给出优化建议,帮助工程师提升数据传输稳定性与效率。

weixin_30847865的博客 388

Es无法写入数据的原因分析

Es无法写入数据的原因分析

qq_37158147的博客 2511

51单片机+HX711电子秤Proteus仿真保姆级教程(附完整源码与避坑指南)

本文详细介绍了51单片机与HX711电子秤在Proteus仿真中的全流程实战指南,包括电路设计、核心代码实现、典型问题排查及系统集成等关键步骤。特别提供了HX711驱动程序的编写技巧和称重数据处理算法,帮助开发者快速搭建高精度电子秤仿真系统,并避免常见的设计陷阱。

weixin_30752699的博客 413

spark写入es报错,[FORBIDDEN/12/index read-only / allow delete (api)]解决方法

最近在进行spark数据写入es的时候,发生了报错,[FORBIDDEN/12/index read-only / allow delete (api)]. 在网上查了一下,有可能是因为磁盘空间不够,索引变为只读,不可以写入数据,但是能删除数据,修改参数就可以解决. PUT /twitter/_settings { "index.blocks.read_only_allow_delete":...

a904364908的博客 606

车辆TBOX科普 第7次 TBOX技术深度解析:硬件架构与核心组件详解

摘要: TBOX(车载远程信息处理单元)是智能网联汽车的核心组件,承担数据采集、通信连接与安全交互等关键功能。其硬件架构以主控单元为核心,采用ARM架构处理器(如NXP i.MX系列)实现高效能低功耗处理,搭配DDR4/LPDDR5内存保障性能,eMMC/UFS存储确保数据可靠性。设计中需平衡车规级可靠性(AEC-Q100)、EMC兼容性及成本控制,同时集成通信、定位与安全模块。未来趋势聚焦异构计算、先进制程及功能安全(ASIL-D)与信息安全融合,推动TBOX向边缘计算节点演进。该技术是汽车智能化转型的重

IT深耕十余载,大道之简 857

UE5 C++教程(一、基本结构)

虚幻API由三块组成,分别是Runtime,Developer utilitiew,functionality for the Editor,大多数游戏性编程只使用运行时模块,最常见的三个是Corn、CornUObject和Engine。

skycol的博客 1万+

Griffin0.6服务初测--使用Measure库提交自定义文件

前言 前面提到我们可以使用Griffin UI 来创建测试用例,而且我们还可以依据自身情况来提交自定义json文件,目前griffiin保留的connector只有hive,如若扩展还需要使用jar包提交的方式, 当前griffin提供的UI并不能满足需求,所以在这里做个记录方便后续集成到公司的大数据监控系统上面来。 参考官网示例:http://griffin.apache.org/docs/quickstart.html以下定义了一个batch的profiling任务 一、定义环境配置文件 示例 .

欲望以提升热忱 毅力以磨平高山 1283

[STC32G144K246入门第三步]驱动串口收发(接收不定长数据)

本文介绍了STC32G144K246单片机的串口功能配置与使用。该芯片具有8组独立USART,支持异步/同步模式,各串口可独立配置波特率并支持DMA传输。重点讲解了串口寄存器配置方法,包括引脚设置、波特率计算和中断处理。特别指出RX引脚需配置为开漏或准双向口以避免接收乱码。还介绍了通过定时器实现不定长数据接收的技术方案,并提供了完整的初始化代码和中断处理函数示例。文中包含串口时序图、寄存器配置表等实用参考信息,适合嵌入式开发者快速上手多串口应用开发。

sinat_58149788的博客 194

数据目录建设awesome-bigdata:企业数据资产盘点的终极指南

在当今数据驱动的商业环境中,企业数据资产的有效管理已成为核心竞争力。awesome-bigdata作为一个精心策划的大数据框架、资源和工具列表,为企业数据目录建设提供了全面的技术支持和实践指导,帮助组织系统性地梳理、整合和利用数据资产。 ## 为什么选择awesome-bigdata进行数据目录建设? awesome-bigdata项目汇集了全球顶尖的大数据技术生态,涵盖从数据存储、处理到分析

gitblog_00078的博客 600

PostgreSQL 核心原理:大字段(大对象)是如何被压缩和存储的(TOAST存储机制)

PostgreSQL通过TOAST机制高效处理大字段存储问题,解决单行超过8KB页大小限制的挑战。TOAST采用透明分片、按需加载和自动压缩策略,支持TEXT、JSONB等变长类型,无需用户干预。其核心包括四种存储策略(plain/external/main/extended),自动将大字段分片存入专用TOAST表,主表仅保留指针。读取时按需解压拼接,支持部分加载优化。TOAST表结构包含chunk_id、序列号和分片数据,配合内置PGLZ压缩算法,平衡存储效率与访问性能。该机制使PostgreSQL能稳定

数据知道的博客 2623

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

构建轻量级数据编织原型:实现异构数据存储的自动化治理

数据治理是企业数据平台建设的核心环节,旨在确保数据的可发现、可理解、可信任与可管控。其核心原理在于通过系统化的方法对数据进行全生命周期管理,以提升数据资产的价值与合规性。在技术实现上,自动化与智能化是关键趋势,能够有效应对传统手工治理模式流程冗长、难以跟上数据产生速度的挑战。数据编织(Data Fabric)作为一种新兴的架构理念,其技术价值在于通过整合现有工具,为分布在各类异构存储(如MySQL、Hive、Kafka)中的数据建立一个统一的逻辑层,实现“数据不动,治理先行”。这尤其适用于需要快速响应业务需

weixin_30387799的博客 490

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

电商数据分析策略研究报告

电商数据分析策略研究报告

姜穆澜的博客 499

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

解决: java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient

解决: java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient 当你运行服务器时,报出以上错误解决方案: 最近项目中要求在注册中写一个短信验证,然后我使用javaServlet+jsp+jquery.ajax等技术完成了 但是在运行过程中出了一个异常,这个异常的错误我寻找了一上午。发现了以下几种解决方案

MyAzhe0ci3的博客 1万+

一个 DefaultHttpClient 类 noClassDefFoundError 问题

前言 日期:20190905 分类: bug 日常 问题描述 公司项目,本人小米手机运行问题,报 java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/impl/client/DefaultHttpClient 解决问题 网络搜一下,在 Manifest.xml 的 applcaition 节点增加: &lt...

随遇而安的博客 843

java.lang.NoSuchFieldError: INSTANCE异常解决方法

Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE at org.apache.http.conn.ssl.SSLConnectionSocketFactory.(SSLConnectionSocketFactory.java:144) at com.aliyun.oss.common.comm.DefaultServ

beifengtz 3万+

java报错:Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE

Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144) at us.codecraft.webmagic.down...

weixin_30376083的博客 1185

记一次Spark 1.6 2.3 读写Clickhouse :Exception in thread “main“ java.lang.NoSuchFieldError: INSTANCE

一、最近在使用Clickhouse 数仓存储,由于线上有部分是用Spark 做为计算框架 , 所以这里一部分使用了Spark 写Clickhouse 。代码在本地测试完没有问题,上了生产发现类找不到。由于平时项目打包并没有所有依赖都打进去, 初步确定肯定是JAR包冲突 ,使用的 clickhouse-jdbc-0.24.jar 版本。先看异常: 20/11/18 11:39:06 INFO state.StateStoreCoordinatorRef: Registered StateStoreCoor.

1626

httpclient工具类java.lang.NoClassDefFoundError

Httpclient工具类 这个工具类我是没有成功,报 java.lang.NoClassDefFoundError: org/apache/http/HttpEntity,应该是我包有问题,但是试了很长时间,没弄出来就放弃了,然后用的方法就是我第一篇博客写的。网上也有其他关于httpclient的方法,不过有坑,不知道他们是故意的还是其他的什么,就是 创建httpclient对象这。 网上是写的...

加油 4295

java.lang.NoClassDefFoundError: org/apache/http/client/config/RequestConfig

java 错误。java.lang.NoClassDefFoundError: org/apache/http/client/config/RequestConfig 本质上是httpClient的jar包版本太低。 之前是 <dependency> <groupId>org.apache.httpcomponents</groupId> &l...

weixin_30505225的博客 1993

Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE

具体报错如下 xception in thread "main" java.lang.NoSuchFieldError: INSTANCE at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.(DefaultHttpRequestWriterFactory.java:52) at org.apache.http

canghyx的博客 1万+
上一篇: Spark SQL优化利器——Adaptive Execution
下一篇: jenkins构建maven、git项目部署远程服务器完整过程
yyoc97
博客等级 码龄12年 272粉丝 91原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值