Java 使用Elasticsearch连接器的Spark Streaming引发JVM_绑定错误

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

我使用Java和elasticsearch-Spark-20_2.11(版本5.3.2)中的Spark 2.1.1在elasticsearch中写入数据。我创建JavaStreamingContext,然后将其设置为等待终止,因此应用程序应始终检索新数据

读取流后,我将其拆分为RDD,并对每个RDD应用SQL聚合,然后将其写入Elasticsearch,如下所示:

        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