我有一个应用程序,在其中将spark数据框放在elasticsearch上
使用以下代码
inputDF.write.format("org.elasticsearch.spark.sql")
.mode(SaveMode.Append)
.option("es.resource", "{date}/" + type).save()
具有这些属性
spark.es.batch.size.bytes=5000000
spark.es.batch.size.entries=5000
spark.es.batch.write.refresh=false
在一些做相同工作并推送到Elasticsearch的机器上,我有多个独立Spark提交实例(100-150)。
在Elasticsearch方面,我有一个主节点和9个数据节点,它们具有1TB的容量和足够的RAM(15 GB-64GB)
我为索引创建默认映射 使用这些参数
"number_of_shards": "45",
"refresh_interval": "-1",
"number_of_replicas": "0"
以下是特定索引的统计信息
"total" : {
"docs" : {
"count" : 2083251258,
"deleted" : 0
},
"store" : {
"size_in_bytes" : 1814616254253,
"throttle_time_in_millis" : 0
},
"indexing" : {
"index_total" : 1703849459,
"index_time_in_millis" : 739162810,
"index_current" : 0,
"index_failed" : 0,
"delete_total" : 0,
"delete_time_in_millis" : 0,
"delete_current" : 0,
"noop_update_total" : 0,
"is_throttled" : false,
"throttle_time_in_millis" : 0
}
}
看起来索引速率仅为每秒约2k。 另外,我不断收到失败条目的错误,像这样
Could not write all entries [99/347072] (maybe ES was overloaded?).
如何快速无误地插入文档?