Scala 如何将from_json与Kafka connect 0.10和Spark结构化流媒体一起使用?
我试图从[Databricks][1]复制该示例,并将其应用于Kafka和spark结构化流媒体的新连接器,但我无法使用spark中的现成方法正确解析JSON 注:本主题以JSON格式写入卡夫卡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
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