Scala 如何将from_json与Kafka connect 0.10和Spark结构化流媒体一起使用?

Scala 如何将from_json与Kafka connect 0.10和Spark结构化流媒体一起使用?,scala,apache-spark,apache-kafka,apache-kafka-connect,spark-structured-streaming,Scala,Apache Spark,Apache Kafka,Apache Kafka Connect,Spark Structured Streaming,我试图从[Databricks][1]复制该示例,并将其应用于Kafka和spark结构化流媒体的新连接器,但我无法使用spark中的现成方法正确解析JSON 注:本主题以JSON格式写入卡夫卡 val ds1 = spark .readStream .format("kafka") .option("kafka.bootstrap.servers", IP + ":9092") .option("zookeeper

我试图从[Databricks][1]复制该示例,并将其应用于Kafka和spark结构化流媒体的新连接器,但我无法使用spark中的现成方法正确解析JSON

注:本主题以JSON格式写入卡夫卡

val ds1 = spark
          .readStream
          .format("kafka")
          .option("kafka.bootstrap.servers", IP + ":9092")
          .option("zookeeper.connect", IP + ":2181")
          .option("subscribe", TOPIC)
          .option("startingOffsets", "earliest")
          .option("max.poll.records", 10)
          .option("failOnDataLoss", false)
          .load()
下面的代码将不起作用,我相信这是因为列json是一个字符串,与来自\u json签名的方法不匹配

    val df = ds1.select($"value" cast "string" as "json")
                .select(from_json("json") as "data")
                .select("data.*")
有什么建议吗

[更新]工作示例:

首先需要为JSON消息定义模式。比如说

val schema = new StructType()
  .add($"id".string)
  .add($"name".string)
现在您可以在
from_json
方法中使用此模式,如下所示

val df = ds1.select($"value" cast "string" as "json")
            .select(from_json($"json", schema) as "data")
            .select("data.*")

如果您有编译器警告“value$不是成员…”,请不要忘记导入spark.implicits。我花了额外的5-10分钟才明白问题是,哪个库提供了名为“from_json”的函数?我似乎不知道该怎么办!!!请帮助..@Raghav->import org.apache.spark.sql.functions.\u检查这里的示例:@abaghel-我在这里指的是你的博客-如果没有java bean,我们不能解析/推断json数据吗?@abaghel我看不到控制台输出,即使它打印为true