我们正在使用SparkPstreaming和Java通过JavaPairRDD(Spark 1.6.0)的saveAsNewAPIHadoopFile方法将数据写入ElasticSearch。所有这些在本地和群集上都可以很好地工作。但是,我们确实注意到与ElasticSearch的连接数量增长非常快(从http://localhost:9200/_nodes/stats/http/_all?pretty中可以看到,用于运行本地系统),最终导致ElasticSearch变得非常慢。似乎为每个RDD都建立了一个新连接,并且看起来好像也再次关闭了。是否可以打开连接并使其保持尽可能长的打开时间,或者至少保持相当长的时间?我们使用提到的Spark 1.6.0和ElasticSearch 2.0.0。
最佳答案
是的,如果要在foreachRDD
中创建连接,则会在每个RDD上创建一个连接。您应该使用连接池。在文档中对此进行了详细介绍:
https://spark.apache.org/docs/latest/streaming-programming-guide.html#design-patterns-for-using-foreachrdd
spark-streaming and connection pool implementation
关于java - 从Java Spark到ElasticSearch的连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39509653/