通过spark从elasticsearch读取导致数据丢失和重复

时间:2019-05-03 09:41:48

标签: apache-spark elasticsearch

我们使用简单的CURL和Spark查询了给定的MAC#(样本),并获得了相同的计数。但是,一旦我们完成了全索引检索,就可以看到相同MAC#和重复事件的事件计数减少。现在很明显,在我们完全摄取过程中存在一个问题。每天的总交易量约为200-400百万。

原因是未知的,并且似乎更倾向于对所涉及的ElasticSearch参数进行微调。

Elasticsearch版本-5.x 火花-2.x Scala-2.x ES上的源数据大小-70-80 GB 总共5个碎片 当前使用的执行程序数量-17 核心-3

当我们删除最大文档数和滚动大小选项时,数据可以完美匹配,但会降低性能。通常在30分钟内运行的作业现在要运行6-7个小时。

val df = spark.read.format("org.elasticsearch.spark.sql")
.option("es.nodes",host.net:9200")
.option("es.nodes.wan.only", "true")
.option("es.read.field.as.array.include", "tags")
.option("es.input.max.docs.per.partition", "100000")
.option("es.read.metadata", "true")
.option("es.scroll.size","10000")
.option("es.query",""" ?q=message:"sample here" """)
.load(index_nm)

我们有什么方法可以调整弹性搜索以加快检索速度,或者可以为最大文档和滚动大小设置任何最佳设置。

0 个答案:

没有答案