【问题标题】:How to JavaInputDStream JSON to ElasticSearch JAVA如何将 JavaInputDStream JSON 转换为 ElasticSearch JAVA
【发布时间】:2018-01-12 10:09:20
【问题描述】:

大家好,我正在使用 kafka > spark streaming > Elasticsearch。 但我不会将 Spark Streaming JavaInputDStream JSON 发送到 elasticsearch。

我的代码:

    SparkConf conf = new SparkConf()
            .setAppName("Streaming")
            .setMaster("local")
            .set("es.nodes","localhost:9200")
            .set("es.index.auto.create","true");
    JavaStreamingContext streamingContext = new JavaStreamingContext(conf, new Duration(5000));
    Map<String, Object> kafkaParams = new HashMap<>();
    kafkaParams.put("bootstrap.servers", "localhost:9092");
    kafkaParams.put("key.deserializer", StringDeserializer.class);
    kafkaParams.put("value.deserializer", StringDeserializer.class);
    kafkaParams.put("group.id", "exastax");
    kafkaParams.put("auto.offset.reset", "latest");
    kafkaParams.put("enable.auto.commit", false);

    Collection<String> topics = Arrays.asList("loglar");
    JavaInputDStream<ConsumerRecord<String, String>> stream =
            KafkaUtils.createDirectStream(
                    streamingContext,
                    LocationStrategies.PreferConsistent(),
                    ConsumerStrategies.<String, String>Subscribe(topics, kafkaParams)
            );

    JavaPairDStream<String, String> finisStream = stream.mapToPair(record -> new Tuple2<>("", record.value()));
    finisStream.print();
    JavaEsSparkStreaming.saveJsonToEs(finisStream,"spark/docs");
    streamingContext.start();
    streamingContext.awaitTermination();


}

JavaEsSparkStreaming.saveJsonToEs(finisStream,"spark/docs"); >> finisStream 不起作用,因为它不是 JavaDStream。 如何转换JavaDStream?

【问题讨论】:

    标签: apache-spark elasticsearch apache-kafka spark-streaming


    【解决方案1】:

    非常感谢您的回答!但我解决了这段代码:

     JavaDStream<String> stream1 = stream.map(
                    new Function<ConsumerRecord<String, String>, String>() {
                        @Override
                        public String call(ConsumerRecord<String, String> r) {
                            return r.value();
                        }
                    }
            );
               JavaEsSparkStreaming.saveJsonToEs(stream1,"spark/docs");
    

    【讨论】:

      【解决方案2】:

      JavaEsSparkStreaming.saveJsonToEsJavaDStream 一起使用

      JavaEsSparkStreaming.saveToEsWithMetaJavaPairDStream 一起使用

      修复您的代码:

      JavaDStream<String> finisStream = stream.map(new Function<Tuple2<String, String>, String>() {
          public String call(Tuple2<String, String> stringStringTuple2) throws Exception {
              return stringStringTuple2._2();
          }
      });
      
      JavaEsSparkStreaming.saveJsonToEs(finisStream,"");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-02
        • 1970-01-01
        相关资源
        最近更新 更多