Har*_*hit 5 json apache-spark apache-spark-sql pyspark
我有一个表,其中有 1 列是序列化的 JSON。我想在此 JSON 列上应用架构推断。我不知道作为 JSON 提取输入的模式(例如:from_json 函数)。
我可以在 Scala 中这样做
val contextSchema = spark.read.json(data.select("context").as[String]).schema
val updatedData = data.withColumn("context", from_json(col("context"), contextSchema))
Run Code Online (Sandbox Code Playgroud)
如何将此解决方案转换为纯 Spark-SQL?
用于生成架构spark-sql
,toDDL
然后使用 中的架构from_json
。
Example:
df.show(10,false)
//+---+-------------------+
//|seq|json |
//+---+-------------------+
//|1 |{"id":1,"name":"a"}|
//+---+-------------------+
val sch=spark.read.json(df.select("json").as[String]).schema.toDDL
//sch: String = `id` BIGINT,`name` STRING
df.createOrReplaceTempView("tmp")
spark.sql(s"""select seq,jsn.* from (select *,from_json(json,"$sch") as jsn from tmp)""").
show(10,false)
//+---+---+----+
//|seq|id |name|
//+---+---+----+
//|1 |1 |a |
//+---+---+----+
Run Code Online (Sandbox Code Playgroud)