Spark读写ES调优记录
来源:     阅读:685
云上智慧
发布于 2020-04-24 15:18
查看主页

使用spark读写es可以使用ES提供的包,es提供了对hadoop,spark等大数据组件的包,es-spark包地址:https://www.elastic.co/guide/en/elasticsearch/hadoop/6.3/spark.html

问题记录

项目中有两个索引数据量较大,尽管API支持读前过滤,但是过滤后的数据读起来还是很慢。本身指标计算不复杂,计算时间很短,读数据成为短板。

索引名shard数数据量过滤后
leads57千万1千万
leads_call59千万100万

读数据优化

尽管分区数提高了,但是数据分布并不均匀,造成这种现象可能和多种因素有关。
因为slice优化不理想,这里采取添加索引shard数的方式,将shard加至10,并且关闭slice优化,效果比较理想。

写数据优化

项目中数据经过聚合计算后,数据量只有100万左右,因而写数据并不是短板,只是简单配置了参数。

spark.es.batch.size.entries=5000
spark.es.batch.write.refresh=false

第一个参数设置批写入的bulk大小,默认值是1000,
第二参数关闭批写入后主动刷新索引的操作

总结

经过层层优化,整个计算任务控制在了3min中左右,任务时间得到缩短,但是读数据仍然占的比重较大,个人感觉es本身并不适合大批量数据读写的场景。假如执行计算任务的数据量很大,es和spark并不搭,可以考虑Hbase+spark的方式替代。反之,假如数据可以提前过滤,并且过滤后的数据并不多的情况下,使用es+spark是一种不错的选择。

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
程序员进阶架构师必备架构基础技能
从定义到AST及其遍历方式,一文带你搞懂Antlr4
Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享
第31期 技术人如何自我成长 & 还分不清 Cookie、Session、Token、JWT
仙侠类H5|最新出炉的主题游戏H5
首页
搜索
订单
购物车
我的