Java 使用Elasticsearch连接器的Spark Streaming引发JVM_绑定错误
我使用Java和elasticsearch-Spark-20_2.11(版本5.3.2)中的Spark 2.1.1在elasticsearch中写入数据。我创建JavaStreamingContext,然后将其设置为等待终止,因此应用程序应始终检索新数据 读取流后,我将其拆分为RDD,并对每个RDD应用SQL聚合,然后将其写入Elasticsearch,如下所示:Java 使用Elasticsearch连接器的Spark Streaming引发JVM_绑定错误,java,apache-spark,spark-streaming,Java,Apache Spark,Spark Streaming,我使用Java和elasticsearch-Spark-20_2.11(版本5.3.2)中的Spark 2.1.1在elasticsearch中写入数据。我创建JavaStreamingContext,然后将其设置为等待终止,因此应用程序应始终检索新数据 读取流后,我将其拆分为RDD,并对每个RDD应用SQL聚合,然后将其写入Elasticsearch,如下所示: recordStream.foreachRDD(rdd -> { if (rdd.co
recordStream.foreachRDD(rdd -> {
if (rdd.count() > 0) {
/*
* Create RDD from JSON
*/
Dataset<Row> df = spark.read().json(rdd.rdd());
df.createOrReplaceTempView("data");
df.cache();
/*
* Apply the aggregations
*/
Dataset aggregators = spark.sql(ORDER_TYPE_DB);
JavaEsSparkSQL.saveToEs(aggregators.toDF(), "order_analytics/record");
aggregators = spark.sql(ORDER_CUSTOMER_DB);
JavaEsSparkSQL.saveToEs(aggregators.toDF(), "customer_analytics/record");
}
});
Elasticsearch通过Docker compose使用以下环境参数进行配置:
- cluster.name=cp-es-cluster
- node.name=cloud1
- http.cors.enabled=true
- http.cors.allow-origin="*"
- network.host=0.0.0.0
- discovery.zen.ping.unicast.hosts=${ENV_IP}
- network.publish_host=${ENV_IP}
- discovery.zen.minimum_master_nodes=1
- xpack.security.enabled=false
- xpack.monitoring.enabled=false
您可以共享elastic search yaml文件和spark配置文件吗?我在问题描述中添加了此信息。您可以终止后面运行的java进程并重新启动spark submit作业吗?我尝试过此方法,但每次都会发生相同的情况:第一次数据插入成功完成,但后续每次都失败。我理解Spark streaming的概念是,java进程应该始终运行,以便Spark streaming在不再次提交作业的情况下检索新数据。您可以共享弹性搜索yaml文件和Spark配置文件吗?我在问题描述中添加了此信息。请关闭运行在后面的java进程并重新启动spark submit作业?我已尝试过此操作,但每次都会发生相同的情况:第一次数据插入成功完成,但随后的每次数据插入都失败。我理解Spark streaming的概念是,java进程应该始终运行,以便Spark streaming在不再次提交作业的情况下检索新数据。
SparkConf conf = new SparkConf().setAppName(topic).setMaster("local");
JavaStreamingContext streamingContext = new JavaStreamingContext(conf, Durations.seconds(2));
- cluster.name=cp-es-cluster
- node.name=cloud1
- http.cors.enabled=true
- http.cors.allow-origin="*"
- network.host=0.0.0.0
- discovery.zen.ping.unicast.hosts=${ENV_IP}
- network.publish_host=${ENV_IP}
- discovery.zen.minimum_master_nodes=1
- xpack.security.enabled=false
- xpack.monitoring.enabled=false