当前位置: 首页 > 面试题库 >

Elasticsearch数据二进制文件内存不足

唐麒
2023-03-14
问题内容

我试图将800GB的文件上传到elasticsearch,但是我不断收到内存错误,告诉我数据二进制文件内存不足。我的系统上有64GB的RAM和3TB的存储空间

curl -XPOST 'http://localhost:9200/carrier/doc/1/_bulk' --data-binary @carrier.json

我想知道配置文件中是否有设置可以增加内存量,以便我可以上传到他的文件

谢谢


问题答案:

800GB一次发送就足够了,ES必须将所有内容都放入内存中才能进行处理,因此对于您拥有的内存量来说可能太大了。

解决此问题的一种方法是将您的文件拆分为多个文件,然后依次发送。您可以使用如下所示的小型Shell脚本来实现。

#!/bin/sh

# split the main file into files containing 10,000 lines max
split -l 10000 -a 10 carrier.json /tmp/carrier_bulk

# send each split file
BULK_FILES=/tmp/carrier_bulk*
for f in $BULK_FILES; do
    curl -s -XPOST http://localhost:9200/_bulk --data-binary @$f
done

更新

如果您想解释ES响应,则可以通过将响应管道传递到一个像这样的小型python一线容器来轻松实现:

curl -s -XPOST $ES_HOST/_bulk --data-binary @$f | python -c 'import json,sys;obj=json.load(sys.stdin);print "    <- Took %s ms with errors: %s" % (obj["took"], obj["errors"])';


 类似资料:
  • 问题 你想内存映射一个二进制文件到一个可变字节数组中,目的可能是为了随机访问它的内容或者是原地做些修改。 解决方案 使用 mmap 模块来内存映射文件。 下面是一个工具函数,向你演示了如何打开一个文件并以一种便捷方式内存映射这个文件。 import os import mmap def memory_map(filename, access=mmap.ACCESS_WRITE): siz

  • Blob对象 FileList对象 File对象 FileReader对象 综合实例:显示用户选取的本地图片 URL对象 参考链接 历史上,JavaScript无法处理二进制数据。如果一定要处理的话,只能使用charCodeAt()方法,一个个字节地从文字编码转成二进制数据,还有一种办法是将二进制数据转成Base64编码,再进行处理。这两种方法不仅速度慢,而且容易出错。ECMAScript 5引入

  • Blob对象 FileList对象 File对象 FileReader对象 综合实例:显示用户选取的本地图片 URL对象 参考链接 历史上,JavaScript无法处理二进制数据。如果一定要处理的话,只能使用charCodeAt()方法,一个个字节地从文字编码转成二进制数据,还有一种办法是将二进制数据转成Base64编码,再进行处理。这两种方法不仅速度慢,而且容易出错。ECMAScript 5引入

  • 问题内容: 这是一些现有代码的重要组成部分,我正在尝试将这些代码适应自己的用途。 值得注意的是,这会导致文件很大,并且是从此巨型文件中(痛苦地)提取的二进制数据。 现有代码将类似档案的文件的内容提取到磁盘,但是我只需要从该档案中读取这些存储的文件(如果有任何意义)。 我需要使用Pygame从该文件中读取数百mbs的数据,其中大多数是图像,方法是使用,例如。与其让这段代码将文件的所有内容都写到磁盘上

  • 尝试将numpy矩阵写入二进制文件时,如下所示: 我得到了这个错误: 我能知道怎么解决这个问题吗?非常感谢。

  • 本文向大家介绍C#实现文件与二进制互转并存入数据库,包括了C#实现文件与二进制互转并存入数据库的使用技巧和注意事项,需要的朋友参考一下