Spark读取ES报错EsHadoopInvalidRequest The number of slices [1632] is too large

2023-11-13

Spark读取ES报错EsHadoopInvalidRequest: The number of slices [1632] is too large

1.背景

最近需要将ES指定索引中的数据使用Spark读取,进行简单处理后写入HBase,使用了如下依赖。

        <!-- spark 依赖包 -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.11</artifactId>
            <version>2.4.5</version>
        </dependency>
        <!-- scala 依赖 -->
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.11.12</version>
        </dependency>
        <!-- elasticsearch 提供整合Spark的包 -->
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch-spark-20_2.11</artifactId>
            <version>5.5.1</version>
        </dependency>

代码如下。

object SparkReadES {

  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf()
    conf.setAppName("read_es")
    conf.set("es.nodes", "es_host")
    conf.set("es.port", "9200")
    conf.set("es.nodes.wan.only", "true")
    conf.set("cluster.name", "es-cluset-name")
    val sc: SparkContext = new SparkContext(conf)
    val query = """{
                  |  "query": {"match_all": {}}
                  |}""".stripMargin

    val rdd: RDD[(String, String)] = EsSpark.esJsonRDD(sc, "idex/type", query)

    println(rdd.take(10).toBuffer)
    
    sc.stop()
  }

}

2.解决方法

index.max_slices_per_scroll 是 Elasticsearch 中的一个设置,用于控制每次滚动搜索操作的切片数。滚动搜索是一种在大型数据集上执行连续分页查询的机制。

当执行滚动搜索时,Elasticsearch 将结果切分为多个切片(slices),每个切片处理一部分数据。index.max_slices_per_scroll 设置决定了每次滚动搜索操作中可以使用的最大切片数。

注意:修改此设置可能会对查询性能产生影响。较大的切片数可能会增加搜索操作的负载和资源消耗。因此,建议根据实际情况进行调整,并进行基准测试以评估性能变化。

2.1 修改指定索引配置(推荐)

在Kibana的Dev Tools中使用如下指令即可。

PUT /index_name/_settings
{
  "index.max_slices_per_scroll": 2048
}

指定数量为 2048,这种方式只需要修改读取索引的设置即可,不用重启服务,并且读取完毕之后可以将该参数值改回默认的 1024。

2.2 修改ES配置

  1. 打开 Elasticsearch 配置文件,通常位于 config 目录下,名为 elasticsearch.yml
  2. 在配置文件中找到或添加以下行:index.max_slices_per_scroll: 2048
  3. 保存并关闭配置文件。
  4. 重启 Elasticsearch 以使更改生效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark读取ES报错EsHadoopInvalidRequest The number of slices [1632] is too large 的相关文章

随机推荐

  • C++复习第二天:类与对象

    1 什么是面向过程 什么是面向对象 C语言是面向过程的 关注的是过程 分析出解题过程的步骤 调用函数来实现 C 是基于面向对象的 关注的是对象 将一件事物划分成不同的对象 通过不同对象之间相互交互完成 2 面向对象的三大特性 面向对象的三大
  • Unity3D开发环境安装(windows系统)

    1 首先先下载软件包 http pan baidu com s 1imYVv 4 2版本 2 下载完后 解压会看到两个文件 运行第二个安装包 3 准备安装 这里直接上图了 这里全选 里面包括运行媒体之类的 这里自己选择安装目录 如果你C盘空
  • 第三章内存管理

    1 内存的基础知识 内存可存放数据 程序执行前需要先放到内存中才能被CPU处理 缓和CPU与硬盘之间的速度矛盾 指令中的地址参数直接给出了变量x的实际存放地址 物理地址 1 绝对装入 绝对装入 在编译时 如果知道程序将放到内存中的哪个位置
  • 5G应用场景300例 附下载地址

    为加快5G在重点产业领域的推广应用 推动我省5G产业发展 我厅会同山东联通 山东移动 山东电信在全国范围内筛选了解决方案 编制了 5G应用场景300例 关注公众号 互联互通社区 回复 5G应用场景300例 获取全部内容 5G移动通信技术基本
  • 运行python脚本时传入参数的几种方式(接收外部参数)

    运行python脚本时传入参数时三种格式对应不同的参数解析方式 分别为sys argv argparse tf app run 前两者是python自带的功能 后者是tensorflow提供的便捷方式 1 sys argv sys模块是很常
  • Q_UNUSED()函数的作用

    Q UNUSED 函数在程序中的作用 就如它所代表的英文一样 unused 即无用的意思 即Q UNUSED 函数在程序中没有实质性的作用 用来避免编译器警告 下面我们来看一组程序 void ColorItem paint QPainter
  • Flutter 环境配置

    Flutter 环境配置 电脑上面安装配置JDK 1 下载安装JDK 下载地址 https www oracle com technetwork java javase downloads jdk8 downloads 2133151 ht
  • 刚拿到esp32-cam想测试该怎么办?看这篇文章就可以了

    无意间对esp32 cam感兴趣 就去某pdd买了一个模块玩玩 组装摄像头的时候不要硬插进去 有个活动卡槽可以扣开 如下图 接下来去arduino官网或者中文社区下载 arduino官网 https www arduino cc en so
  • LeetCode题目笔记——206. 反转链表

    文章目录 题目描述 题目难度 简单 方法一 顺序遍历 C 代码 Python代码 方法二 递归 代码 题目描述 题目难度 简单 方法一 顺序遍历 我们只需顺序遍历一次列表 在原地将它们的指向依次逆转 需要注意的是 当链表本身为空的时候我们直
  • python数据分析-超市客流量高峰期分析--调用matplotlib折线图

    python数据分析 超市客流量高峰期分析 调用matplotlib折线图 数据处理 有一份超市订单csv格式数据源导入后如下 导入需要使用的模块 import pandas as pd import matplotlib pyplot a
  • 6个 Python 办公黑科技,工作效率提升100倍!(附代码)

    下班晚 加班久感觉已经成为现代打工人的通病 每天将大部分时间浪费在一些机械 重复的工作上 如何提升你自己的工作效率才是关键 今天给大家分享6个 Python 办公小技巧 让你的工作效率倍增 欢迎大家学习收藏 喜欢点赞支持 废话不说 让我们开
  • 微信小程序遇到的坑系列---小程序上传图片线上失败

    微信小程序中 上传图片的代码如下 实现功能 1 上传图片到七牛云 2 上传成功后 对于返回的路径展示到页面 3 将返回的路径发送给后端 对于第一个需求 1 上传图片到七牛云 我们需要在七牛云上有一个账号去存自己的图片 于是不能忽略的一步 就
  • 【业务功能篇49】Springboot+EasyPoi 实现Excel 带图片列的导入导出

    SpringBoot整合EasyPoi实现Excel的导入和导出 带图片 51CTO博客 springboot easypoi导出excel
  • JDBC Utils 详解(通俗易懂)

    目录 一 前言 二 JDBCUtils说明 1 背景及起因 2 示意图 3 JDBCUtils类的定义 三 JDBCUtils应用 1 DML的应用 2 DQL的应用 四 总结 一 前言 第三节内容 up主要和大家分享一下JDBC Util
  • 输入权重和偏置的范围问题?

    对于张的单输入单输出的非线性函数 用黄的程序 隐层神经元的个数并没有太大的影响 而输入权重和偏置的范围有很大的影响 隐层神经元数50 InputWeight rand NumberofHiddenNeurons NumberofInputN
  • 龙芯+RT-Thread+LVGL实战笔记(1)——从移植开始

    过去的大半年时间 一直带着学生备战全国职业院校技能大赛 嵌入式系统应用开发 赛项 由于是首次参加该赛项 很多东西都是从0到1的摸索和积累 最后的成绩自然也不甚理想 作为指导教师 备赛期间除了给予学生必要的指导 自己也花了不少精力研究了大赛指
  • 9.7C++作业

    include
  • redis安装过程报错解决方案

    问题一 出现如下错误 cd src make all make 1 Entering directory xx xx redis x x x src CC adlist o bin sh cc command not found make
  • pycharm 安装 markdown 的三种方法! 绝对管用!!!

    Markdown是一种可以使用普通文本编辑器编写的标记语言 通过简单的标记语法 它可以使普通文本内容具有一定的格式 本人使用的是专业版pycharm 自己破解的 不知道正版的有没有安装不上markdown的情况 就个人所遇到的问题解决方案如
  • Spark读取ES报错EsHadoopInvalidRequest The number of slices [1632] is too large

    Spark读取ES报错EsHadoopInvalidRequest The number of slices 1632 is too large 1 背景 最近需要将ES指定索引中的数据使用Spark读取 进行简单处理后写入HBase 使用