Spark向Elasticsearch批量导入数据,出现重复记录问题的定位
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,看了下es-hadoop插件的源码:发现ES导入数据重试情况的发生,除了在es.batch.write.retry.policy参数默认开启且es-hadoop插件向ES集群发送bulk写入请求接受到
千家信息网最后更新 2025年12月02日Spark向Elasticsearch批量导入数据,出现重复记录问题的定位
看了下es-hadoop插件的源码:
发现ES导入数据重试情况的发生,除了在es.batch.write.retry.policy参数默认开启且es-hadoop插件向ES集群发送bulk写入请求接受到503响应码会重试3次之外。
本身执行http请求时,也会存在重试(hadoop/rest/NetworkClient.java):
public Response execute(Request request) { Response response = null; boolean newNode; do { SimpleRequest routedRequest = new SimpleRequest(request.method(), null, request.path(), request.params(), request.body()); newNode = false; try { response = currentTransport.execute(routedRequest); ByteSequence body = routedRequest.body(); if (body != null) { stats.bytesSent += body.length(); } } catch (Exception ex) { // configuration error - including SSL/PKI - bail out if (ex instanceof EsHadoopIllegalStateException) { throw (EsHadoopException) ex; } // issues with the SSL handshake, bail out instead of retry, for security reasons if (ex instanceof javax.net.ssl.SSLException) { throw new EsHadoopTransportException(ex); } // check for fatal, non-recoverable network exceptions if (ex instanceof BindException) { throw new EsHadoopTransportException(ex); } if (log.isTraceEnabled()) { log.trace( String.format( "Caught exception while performing request [%s][%s] - falling back to the next node in line...", currentNode, request.path()), ex); } String failed = currentNode; failedNodes.put(failed, ex); newNode = selectNextNode(); log.error(String.format("Node [%s] failed (%s); " + (newNode ? "selected next node [" + currentNode + "]" : "no other nodes left - aborting..."), failed, ex.getMessage())); if (!newNode) { throw new EsHadoopNoNodesLeftException(failedNodes); } } } while (newNode); return response; }当请求出现超时的情况时,es-hadoop插件会再请求一个ES节点发送写入请求。即导入插件认为当前插入节点超时了(默认是一分钟)就视为该节点不可用,就换下一个节点,其实是ES在一分钟内没有处理完插入任务。
将超时时间es.http.timeout参数调大之后,给ES留下充足的入库时间,就不会再发生这个问题了。
插件
节点
参数
情况
时间
数据
问题
充足
任务
源码
集群
处理
定位
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发和软件技术哪个好
银行招收软件开发的
宝塔服务器怎么设置安全
高速公路服务器有加冷却液的吗
2016开展网络安全宣传周活动
注册网络安全行业协会流程
金融网络安全小常识ppt
网络技术的伦理思考
电子商务软件开发业务流程
星球大战战机中队连接服务器
黄山物业管理软件开发多少钱
上海浓趣科技互联网科技
byte 在数据库
epc数据库安装失败
软件开发的保密措施
工业网络技术专转本
写论文参考数据库
大专计算机网络技术学什么专
发动机ECU软件开发公司
主机服务器哪个系统好
服务器安全技巧
数据库实现文件管理
天堂w 服务器编号
数据库表里字段的值相加
武汉编程软件开发
论网络安全中的数字签名
工业网络技术专转本
公安信息网络安全保密工作规定
省市区最新json数据库
使用香港服务器的域名需要备案吗