Spark SQL to_json 函数介绍

发布于:2025-06-27 ⋅ 阅读:(12) ⋅ 点赞:(0)

前言

在Apache Hive中,并没有内置的to_json函数。在Apache Spark SQL中确实有to_json函数,它可以用来将结构化数据(如结构化类型或MAP类型)转换为JSON字符串。这个功能对于需要将表格数据输出为JSON格式的场景非常有用。

函数介绍

to_json(expr [, options])

参数说明

参数 类型 必需 描述
expr 结构化数据类型 待转换的列或表达式(STRUCT, MAP, ARRAY 等)
options MAP<STRING,STRING> 控制 JSON 输出的选项(日期格式、时区处理等),Spark 2.4+ 支持

示例

1.支持的数据类型转换

SELECT 
  to_json(named_struct('name', 'Alice', 'age', 25)) AS struct_example,  -- {"name":"Alice","age":25}
  to_json(map('id', 1001, 'status', 1)) AS map_example,             -- {"id":1001,"status":1}
  to_json(array(1, 2, 3)) AS array_example,                           -- [1,2,3]
  to_json(map('a', named_struct('b', 1))) AS  example1,             ---[{"a":1,"b":2}]
  to_json(array(map('a', 1))) AS  example2   ---[{"a":1}]

2.嵌套数据结构处理

SELECT to_json(
  named_struct(
    'user', named_struct('name', 'Bob', 'email', 'bob@example.com'),
    'scores', array(95, 87, 92)
  )
) AS nested_json;
/*
输出:
{
  "user": {
    "name": "Bob",
    "email": "bob@example.com"
  },
  "scores": [95,87,92]
}
*/

3.可选参数 options 配置

SELECT to_json(
  named_struct('event', 'login', 'timestamp', current_timestamp()),
  map(
    'timestampFormat', "yyyy-MM-dd HH:mm",  -- 自定义时间格式
    'ignoreNullFields', 'false'             -- 保留NULL字段
  )
);
/*
输出示例:
{"event":"login","timestamp":"2023-08-15 14:30"}
*/

SELECT to_json(named_struct('date', current_date()), map('dateFormat', 'dd/MM/yyyy')) AS json;
/*
输出示例:	
{"date":"26/06/2025"}
*/

备注:
Spark SQL Programming Guide:提供关于Spark SQL使用的指南,包括如何使用Spark SQL函数。
可以通过以下链接访问:Spark SQL Programming Guide:https://spark.apache.org/docs/latest/sql-programming-guide.html


网站公告

今日签到

点亮在社区的每一天
去签到