使用spark sql 的时候,加载json数据作为表的基础数据。发现其中的json数据中有些字段对应的是一个嵌套数组:
{“schema1”:"hello",“schema2” : [ {"a":1","b":"11"}, {“a”:"2","b":"22"}…… ]
将json数据加载到spark sql 中:
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val data_js=sqlContext.jsonFile("05.json")
data_js.printSchema()
data_js.registerTempTable("test_table")
现在,如果我想查找schema2 中的a对应的最大值怎么办?
查了很长时间,发现没有能够这种功能的sql语法,那么就想到自己写udf来实现这样的功能
假设我们的数据是以想的形式组织:
{“商品”:“商品a”,“id”:“1”,“代理商报价”:[{“代理商名称”:“wrapper1”,“报价”:“12”,“日期”:“2014-12-15”},{“代理商名称”:“wrapper2”,“报价”:“13”,“日期”:“2014-12-15”},……]}
我们想通过sql 直接选出各个商品的最低报价和对应的代理商ÿ