Elasticsearch искры чтения медленно

Чтение от Elasticsearch v6.2 в искру, используя предписанный разъем свечи org.elasticsearch:elasticsearch-spark-20_2.11:6.3.2 ужасно медленный Это из 3-х узлового кластера ES с индексом:

curl https://server/_cat/indices?v
green  open   db MmVwAwYfTz4eE_L-tncbwQ   5   1  199983131      9974871    105.1gb         51.8gb

Чтение на искровом кластере (10 узлов, 1 Тб памяти, >50 VCPU):

val query = """{
  "query": {
    "match_all": {}
  }
}"""

val df = spark.read
  .format("org.elasticsearch.spark.sql")
  .option("es.nodes","server")
  .option("es.port", "443")
  .option("es.net.ssl","true")
  .option("es.nodes.wan.only","true")
  .option("es.input.use.sliced.partitions", "false")
  .option("es.scroll.size", "1000")
  .option("es.read.field.include", "f1,f2,f3")
  .option("es.query",query)
  .load("db")

df.take(1)

Это заняло 10 минут, чтобы выполнить.

Это как (медленно) должно работать, или я делаю что-то не так?

1 ответ

Это не то, насколько медленным он должен быть, и ответ можно найти на скриншоте, которым вы поделились:

Колонка в Spark UI отображается только одна задача, которая запускает операцию чтения, я не думаю, что это то, чего вы ожидали, иначе какой смысл иметь целый кластер.

Я столкнулся с той же проблемой, и мне потребовалось время, чтобы понять, что Spark связывает задачу (раздел) с каждым сегментом в индексе Elasticsearch,

Вот и наш ответ: чтобы работать быстрее, мы должны распараллелить процесс, как это сделать? хорошо, распределяя наш исходный индекс на несколько шардов.

По умолчанию Elasticsearch создает индекс с одним осколком, однако его можно персонализировать, как показано ниже:

      PUT /index-name
{
     "settings": {
     "index": {
     "number_of_shards": x,  
     "number_of_replicas": xx 
    }
  }
}

Количество шардов может быть больше, чем количество узлов Elastic, все это прозрачно для Spark. Если индекс уже существует, попробуйте создать новый индекс, а затем используйте API-интерфейс Elasticsearch Reindex.

Надеюсь, это решило вашу проблему.

Другие вопросы по тегам