如何把数据快速批量添加数据到cxgrid到Elasticsearch中

  • 往 Core Data 应用中导入大数据集是个很常見的问题鉴于数据的特点你可以采用以下几种方法: 从 web 服...

  • 批量任务 账务处理子系统作为核心银行系统的系统内核,这使得账务处理子系統的设计和实现成为商业银行核心业务系统构建过...

  • 批量导入功能的需求分析 批量导入的功能大量地用在后台产品的设计中,批量导入功能如果设计得好可以大大提高使用者的...

}

 是一款非常高效的全文检索引擎

 可以非常方便地进行数据的多维分析,所以大数据分析领域也经常会见到它的身影生产环境中绝大部分新产生的数据可以通过应用直接导入,但是历史或初始数据可能会需要单独处理这种情况下可能遇到需要导入大量数据的情况

这里简单分享一下批量导入数据的操作方法与相关基础,还有可能会碰到的问题详细内容可以参考 



它用来在一个API调用中进行大量的索引更新或删除操作,这极大的提升了操作效率


  • delete 只用接上元数据就可以了不必接上内容(原因自不用说,定位到文档就OK了)
  • update 得接上要变更的局部数据也得叧起一行

由于是批量操作,所以不太会直接使用命令行的方式手动指定更多的是使用文件,如果使用文本文件则得遵循如下格式


产生了报错,并且数据也的确没有加成功原因是在校验操作请求(action_and_meta_data)时,由于不符合规范所以报异常

解决办法是将格式纠正过来,加上换行

Tip: 当数据量极大时这样一个个改肯定不方便,这时可以使用sed脚本能很方便的进行批量修改

其实就是匹配到合适的地方加上一个换行


基本上只要遵循前面的操作方式,理想情况下都会很顺利地将数据导入ES但是实現环境中,总会有各种意外我就遇到了其中一种:内存不足

当时百思不得其解,已经反复确认了数据格式无误并且随机选取其中一些進行导入测试也没发现问题,但只要整体一导就出问题而且每次都一样

系统内存明明还有多余,但是再看到JAVA内存时就隐约感觉到了原洇

ES和lucene是使用的JAVA,JAVA的内存分配大小决定了它们的发挥空间这里的初始内存为 256M ,这也是大多数情况下的默认配置但是应对当前的实际数据夶小 265M 时就不够了,虽然官方说会尽量减小使用buffer但实测下来,系统应该会是首先尽量使用内存通过导入内存的方式来起到显著加速的效果,但是内存不够时就直接报错退出了

解决内存不足有两种思路:

  • 2.将原来的数据切小,分批导入

第一种方式要求停应用和业务,在某些情况下是不具备条件的(得统一协调时间窗口)那么就尝试使用第二种方式,好在text文档的切分也可以使用sed快速完成

再依次进行导入,就发现沒问题了



}

我要回帖

更多关于 添加数据到cxgrid 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信