get_json_object(jsonstr,json属性)
scala代码:
1 package com.it.baizhan.scalacode.sparksql.examples
2
3 import org.apache.spark.sql.SparkSession
4
5 /**
6 * 读取json格式的字符串直接解析出json中属性对应的值: get_json_object(jsonstr,json属性)
7 */
8 object ReadJsonStringExp {
9 def main(args: Array[String]): Unit = {
10 val session = SparkSession.builder().master("local").appName("test").getOrCreate()
11 val jsonList = List[String](
12 "{\"name\":\"zhangsan\",\"age\":18}",
13 "{\"name\":\"lisi\",\"age\":19}",
14 "{\"name\":\"wangwu\",\"age\":20}",
15 "{\"name\":\"maliu\",\"age\":21}"
16 )
17
18 import session.implicits._
19 import org.apache.spark.sql.functions._
20 val df = jsonList.toDF("info")
21
22
23
24 df.createTempView("t")
25 session.sql(
26 """
27 | select info ,get_json_object(info,"$.name") as name ,get_json_object(info,"$.age") as age
28 | from t
29 """.stripMargin).show(false)
30
31 /**
32 * +----------------------------+--------+---+
33 * |info |name |age|
34 * +----------------------------+--------+---+
35 * |{"name":"zhangsan","age":18}|zhangsan|18 |
36 * |{"name":"lisi","age":19} |lisi |19 |
37 * |{"name":"wangwu","age":20} |wangwu |20 |
38 * |{"name":"maliu","age":21} |maliu |21 |
39 * +----------------------------+--------+---+
40 */
41
42
43 // df.select($"info",get_json_object($"info","$.name").as("name"),get_json_object($"info","$.age").as("age"))
44 // .show(false)
45
46 }
47
48 }