如何将 Spark EMR 集群与 AWS elasticsearch 集群连接起来
Posted
技术标签:
【中文标题】如何将 Spark EMR 集群与 AWS elasticsearch 集群连接起来【英文标题】:How to connect Spark EMR cluster with AWS elasticsearch cluster 【发布时间】:2016-02-02 10:36:25 【问题描述】:我有一个在 aws 环境上运行的 spark 流作业,比如 spark 集群 A。我还提供了另一个新的 aws elasticsearch 集群,比如 ES 集群 B。 现在我必须将数据从 spark(即集群 A)发送到 Elasticsearch 集群(即集群 B),我从中引用 https://www.elastic.co/guide/en/elasticsearch/hadoop/master/spark.html
基于上述链接指南 对于 spark conf 中的集群 A,我设置了以下参数
SparkConf conf = new SparkConf().setAppName("ElasticSearchTest");
conf.set("spark.serializer", org.apache.spark.serializer.KryoSerializer.class.getName());
conf.set("es.nodes", [endpoint of aws elasticsearch cluster]);
conf.set("es.port", "9200");
我在设置 aws 弹性集群期间允许访问策略中的所有内容。
我遇到了异常。它显示classnotfound。但这不是正确的问题,我也验证了 POM 文件中存在类(maven)
我是使用aws elasticsearch与spark集成的新手,有人可以指导我进行必要的配置来实现它吗?
【问题讨论】:
你在这方面有什么收获吗?我正在尝试将 spark 连接到 aws elasticsearch 集群,但有用的文档严重缺乏,以及大量无用的谷歌结果。 【参考方案1】:您需要使用一些连接器从弹性搜索中读取数据,并将其转换为 RDD 进行操作,这是一个我认为可以工作的连接器示例(但未经测试)
https://github.com/elastic/elasticsearch-hadoop#apache-spark
【讨论】:
感谢您的宝贵时间。好吧,我正在寻找如何将数据从运行在集群 A 上的 spark 流连接到另一个不同的 aws elasticsearch 集群。我正在使用 org.elasticsearch.spark.rdd.api.java.JavaEsSpark 将 rdd 存储到弹性搜索中。我的问题是了解哪些 API 可以用作与 spark 集成的 java 服务,以将流数据摄取到 aws elasticsearch。 例如,如果我们想使用 spark 到 SNS,那么我们使用 AmazonSNSClient 并发送类似的数据,我正在寻找我应该使用什么来进行 aws 的弹性搜索。以上是关于如何将 Spark EMR 集群与 AWS elasticsearch 集群连接起来的主要内容,如果未能解决你的问题,请参考以下文章
在没有 spark UI 的情况下在 AWS EMR 中监控 spark 集群
带有 cloudformation 的 AWS EMR 集群:如何启用调试
我的 spark 作业在 aws EMR 集群上长时间处于接受模式