Presto 出现此错误:无法调用“com.fasterxml.jackson.databind.JsonNode.has(String)”,因为“currentNode”为空

时间:2020-12-20 06:21:26

标签: scala apache-kafka presto kafka-producer-api

我正在将一个 JSON 文件推送到 Kafka 主题中,在 presto 中连接该主题并将 JSON 数据构建到一个可查询的表中。

我面临的问题是,presto 不是获取数据,其显示错误无法调用“com.fasterxml.jackson.databind.JsonNode.has(String)”,因为“currentNode”为空。

将数据推入kafka主题的代码:

 object Producer extends App{
    val props = new Properties()
    props.put("bootstrap.servers", "localhost:9092")
    props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer")
    props.put("value.serializer", "org.apache.kafka.connect.json.JsonSerializer")
    val producer = new KafkaProducer[String,JsonNode](props)
    println("inside prducer")
    val mapper = (new ObjectMapper() with ScalaObjectMapper).
        registerModule(DefaultScalaModule).
        configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).
        findAndRegisterModules(). // register joda and java-time modules automatically
        asInstanceOf[ObjectMapper with ScalaObjectMapper] 
     val filename = "/Users/rishunigam/Documents/devicd.json"
     val jsonNode: JsonNode=  mapper.readTree(new File(filename))
     val s = jsonNode.size()
     for(i <- 0 to jsonNode.size()) {
    val js = jsonNode.get(i)
   println(js)
  val record = new ProducerRecord[String, JsonNode]( "tpch.devicelog", js)
   println(record)
  producer.send( record )
}
    println("producer complete")
    producer.close()
  
}

0 个答案:

没有答案