【发布时间】:2019-06-09 03:51:03
【问题描述】:
我有一个带有 JSON 的 Kafka 流媒体源,例如{"type":"abc","1":"23.2"}.
查询给出以下异常:
org.apache.spark.sql.catalyst.parser.ParseException: extraneous
input '.1' expecting {<EOF>, .......}
== SQL ==
person.1
访问"person.1"的正确语法是什么?
我什至将DoubleType 更改为StringType,但这也没有用。只需保留person.type 并在selectExpr 中删除person.1,示例就可以正常工作:
val personJsonDf = inputDf.selectExpr("CAST(value AS STRING)")
val struct = new StructType()
.add("type", DataTypes.StringType)
.add("1", DataTypes.DoubleType)
val personNestedDf = personJsonDf
.select(from_json($"value", struct).as("person"))
val personFlattenedDf = personNestedDf
.selectExpr("person.type", "person.1")
val consoleOutput = personNestedDf.writeStream
.outputMode("update")
.format("console")
.start()
【问题讨论】:
标签: apache-spark apache-spark-sql spark-structured-streaming