1. 程式人生 > >十六.Spark SQL之讀取複雜的json資料

十六.Spark SQL之讀取複雜的json資料

第一步.準備json資料

test.json

{"name":"liguohui","nums":[1,2,3,4,5]}
{"name":"zhangsan","nums":[6,7,8,9,10]}

test2.json

{"name":"Yin","address":{"city":"chinese","state":"China"}}
{"name":"ligh","address":{"city":null,"state":"California"}}

第二步.讀取簡單json資料

scala> val json = spark.read.format("json").load("file:///root/data/test.json")

通過show顯示: 在這裡插入圖片描述

建立成表格的形式進行顯示:

scala> json.createOrReplaceTempView("json_table")
scala> spark.sql("select * from json_table").show

在這裡插入圖片描述

顯示陣列中的其中一列:

scala> spark.sql("select name , nums[2] from json_table").show

在這裡插入圖片描述

只顯示陣列中的一列資料:

scala> spark.sql("select name , explode(nums) from json_table").show

在這裡插入圖片描述

第三步.讀取複雜的json資料

scala> val json2 = spark.read.format("json").load("file:///root/data/test2.json")
scala> json2.createOrReplaceTempView("json_tables2")

通過sql的形式顯示:

scala> spark.sql("select * from json_tables2").show

在這裡插入圖片描述

顯示覆雜的資料(通過點的形式):

scala> spark.sql("select address.city,address.state,name from json_tables2").show

在這裡插入圖片描述

以上就完成了讀取複雜json資料的操作。