json数据源

{"name":"zhangsan","score":100,"infos":{"age":20,"gender":'man'}}
{"name":"lisi","score":70,"infos":{"age":21,"gender":'femal'}}
{"name":"wangwu","score":80,"infos":{"age":23,"gender":'man'}}
{"name":"maliu","score":50,"infos":{"age":16,"gender":'femal'}}
{"name":"tianqi","score":90,"infos":{"age":19,"gender":'man'}}
package examples

import org.apache.spark.sql.SparkSession

/**
* @Author yqq
* @Date 2021/12/14 22:18
* @Version 1.0
*/
object ReadJsonStringEXP {
def main(args: Array[String]): Unit = {
val session = SparkSession.builder().master("local").appName("t5").getOrCreate()
val context = session.sparkContext
context.setLogLevel("Error")
val list = List[String](
"{\"name\":\"kobe\",\"age\":24}",
"{\"name\":\"james\",\"age\":21}",
"{\"name\":\"durant\",\"age\":22}",
"{\"name\":\"jordan\",\"age\":23}",
"{\"name\":\"yi\",\"age\":24}"
)
import session.implicits._
import org.apache.spark.sql.functions.get_json_object
val df = list.toDF("info")
df.createTempView("t")
df.select($"info",get_json_object($"info","$.name").as("name"),get_json_object($"info","$.age").as("age"))
.show(false)

session.sql(
"""
|select info,get_json_object(info,"$.name") as name,get_json_object(info,"$.age") as age
|from t
|""".stripMargin).show(false)
}
}

SparkSQL_经典案例分析_读取嵌套的json格式的数据_json