spark sql 生成 json

背景

想通过 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"
      }
    ]
  }
]

你可能感兴趣的:(spark sql 生成 json)