Elasticsearch使用Spark编写

时间:2017-03-20 17:13:52

标签: apache-spark elasticsearch

我在Spark中创建一个文档集合作为RDD并使用Elasticsearch的Spark读/写库。创建集合的集群很大,因此当它写入ES时,我得到下面的错误,表明ES已经过载,这并不让我感到惊讶。这似乎没有失败的工作。任务可能正在重试并最终成功。在Spark GUI中,报告作业已成功完成。

  1. 有没有办法以某种方式限制ES编写lib以避免重试(我无法改变簇大小)?
  2. 这些错误是否意味着某些数据未写入索引?
  3. 以下是许多报告的任务失败错误之一,但同样没有报告作业失败:

    2017-03-20 10:48:27,745 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Lost task 568.1 in stage 81.0 (TID 18982, ip-172-16-2-76.ec2.internal): org.apache.spark.util.TaskCompletionListenerException: Could not write all entries [41/87360] (maybe ES was overloaded?). Bailing out...
        at org.apache.spark.TaskContextImpl.markTaskCompleted(TaskContextImpl.scala:112)
        at org.apache.spark.scheduler.Task.run(Task.scala:102)
        at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:227)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
    

    我使用的lib是

    org.elasticsearch" % "elasticsearch-spark_2.10" % "2.1.2"
    

1 个答案:

答案 0 :(得分:0)

您能否关注此链接 - https://www.elastic.co/guide/en/elasticsearch/hadoop/current/spark.html 在Spark conf属性或弹性搜索属性中,您需要增加可以在单个帖子中转储的最大记录数,这应该可以解决您的问题。