目錄
- 前言
- 函數介紹
- 參數說明
- 示例
前言
在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