【问题标题】:Spark writing to Elasticsearch slow performanceSpark 写入 Elasticsearch 性能缓慢
【发布时间】:2018-08-29 17:50:36
【问题描述】:

我似乎遇到了一个问题,即 Spark 写入 Elasticsearch 非常慢,并且在建立初始连接时需要很长时间(大约 15 分钟),在此期间 Spark 和 Elasticsearch 都保持空闲状态。 在弹性社区中还有另一个 thread 强调了相同的问题,但它已被关闭,没有任何解决方案。

这就是我从 Spark 写入 ES 的方式:

vgDF.write.format("org.elasticsearch.spark.sql").mode('append').option("es.resource", "demoindex/type1").option("es.nodes", "*ES IP*").save()

Spark 规格

Spark 2.1.0 3 cpu x 10 gb ram x 6 executors running on 3 gce nodesSpark 2.1.0

Elasticsearch 规范:

8 cpu * 30 gb RAM single node

ES 版本:

Elasticsearch: 6.2.2 ES-Hadoop: 6.2.2

供您参考,Spark 从 Cassandra DB 读取数据,处理结果(但这个过程非常快,大约需要 1 到 2 分钟),然后写入 Elasticsearch。

任何帮助将不胜感激

[编辑]

我还尝试将数据大小从数百万条记录更改为仅 960 条记录,但初始延迟仍然相同(大约 15 分钟)。

【问题讨论】:

  • spark和ES在同一个集群吗?
  • 不,他们不是。
  • 听起来像网络延迟
  • 你能详细说明一下,为什么你说它在前 15 分钟是空闲的?请使用该详细信息更新问题。 @sramalingam24 网络延迟似乎无法解决 15 分钟的初始延迟问题。
  • 我不认为这是因为网络延迟。我也在多个网络上尝试过,但初始超时保持不变。

标签: apache-spark elasticsearch pyspark elasticsearch-hadoop


【解决方案1】:

看起来 ES 连接超时。检查您提供的 IP 地址是否可以访问 ES。如果您使用的是公共 IP,请尝试将其更改为私有 IP

【讨论】:

  • 是的,将公共 IP 更改为私有 IP,将提取时间从 20 分钟大幅缩短到 12 秒。谢谢老哥!
  • 嗨,我也遇到了同样的情况,但我不知道如何解决。目前我正在开发 docker 容器,一个用于 ES,一个用于 Spark。他们在不同的项目(docker-compose)中,Spark 可以访问 ES。有什么建议吗?
猜你喜欢
  • 2017-08-22
  • 2018-05-07
  • 2021-06-17
  • 2022-10-16
  • 1970-01-01
  • 2016-07-25
  • 2023-03-30
  • 2016-03-25
  • 2016-07-12
相关资源
最近更新 更多