spark sql 生成 json
2022-06-21 本文已影响0人
shengjk1
背景
想通过 spark sql 查询 hive 表然后将相应的字段组装成 sql,类似于 json_object ,不过可惜的是 spark 3.1.x 并没有 json_object 函数,不过还好spark sql 有 to_json 函数
例子:
SELECT to_json(struct(bis_type,year,douban_rating))
from tv.test where date=20220620
limit 10
SELECT to_json(named_struct('bis_type',bis_type,'year',year,'douban_rating',douban_rating))
from tv.test where date=20220620
limit 10
结果,可以保留数据原类型。这是最重要的一个点,组装 json,得保留原字段的数据类型
{"bis_type":"xxx","year":2022,"douban_rating":8.3}
如何生成嵌套式的 json
SELECT to_json(array(named_struct('ruleType', 'datetime', 'ruleDetail', array(map('columnName', 'a1','function','test'),map('columnName', 'a2','function','test')))));
结果
[
{
"ruleType": "datetime",
"ruleDetail": [
{
"columnName": "a1",
"function": "test"
},
{
"columnName": "a2",
"function": "test"
}
]
}
]