다음을 통해 공유


to_json

또는 A를 포함하는 StructTypeArrayTypeMapTypeVariantType 열을 JSON 문자열로 변환합니다. 지원되지 않는 형식의 경우 예외를 throw합니다.

문법

from pyspark.sql import functions as sf

sf.to_json(col, options=None)

매개 변수

매개 변수 유형 Description
col pyspark.sql.Column 또는 str 구조체, 배열, 맵 또는 variant 개체를 포함하는 열의 이름입니다.
options dict, 선택 사항 변환을 제어하는 옵션입니다. JSON 데이터 원본과 동일한 옵션을 허용합니다. 또한 함수는 꽤 JSON 생성을 가능하게 하는 옵션을 지원 pretty 합니다.

Returns

pyspark.sql.Column: JSON 개체를 문자열 열로 지정합니다.

예시

예제 1: StructType 열을 JSON으로 변환

import pyspark.sql.functions as sf
from pyspark.sql import Row
data = [(1, Row(age=2, name='Alice'))]
df = spark.createDataFrame(data, ("key", "value"))
df.select(sf.to_json(df.value).alias("json")).show(truncate=False)
+------------------------+
|json                    |
+------------------------+
|{"age":2,"name":"Alice"}|
+------------------------+

예제 2: ArrayType 열을 JSON으로 변환

import pyspark.sql.functions as sf
from pyspark.sql import Row
data = [(1, [Row(age=2, name='Alice'), Row(age=3, name='Bob')])]
df = spark.createDataFrame(data, ("key", "value"))
df.select(sf.to_json(df.value).alias("json")).show(truncate=False)
+-------------------------------------------------+
|json                                             |
+-------------------------------------------------+
|[{"age":2,"name":"Alice"},{"age":3,"name":"Bob"}]|
+-------------------------------------------------+

예제 3: MapType 열을 JSON으로 변환

import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, {"name": "Alice"})], ("key", "value"))
df.select(sf.to_json(df.value).alias("json")).show(truncate=False)
+----------------+
|json            |
+----------------+
|{"name":"Alice"}|
+----------------+

예제 4: VariantType 열을 JSON으로 변환

import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, '{"name": "Alice"}')], ("key", "value"))
df.select(sf.to_json(sf.parse_json(df.value)).alias("json")).show(truncate=False)
+----------------+
|json            |
+----------------+
|{"name":"Alice"}|
+----------------+

예제 5: 중첩된 MapType 열을 JSON으로 변환

import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, [{"name": "Alice"}, {"name": "Bob"}])], ("key", "value"))
df.select(sf.to_json(df.value).alias("json")).show(truncate=False)
+---------------------------------+
|json                             |
+---------------------------------+
|[{"name":"Alice"},{"name":"Bob"}]|
+---------------------------------+

예제 6: 간단한 ArrayType 열을 JSON으로 변환

import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, ["Alice", "Bob"])], ("key", "value"))
df.select(sf.to_json(df.value).alias("json")).show(truncate=False)
+---------------+
|json           |
+---------------+
|["Alice","Bob"]|
+---------------+

예제 7: 지정된 옵션을 사용하여 JSON으로 변환

import pyspark.sql.functions as sf
df = spark.sql("SELECT (DATE('2022-02-22'), 1) AS date")
json1 = sf.to_json(df.date)
json2 = sf.to_json(df.date, {"dateFormat": "yyyy/MM/dd"})
df.select("date", json1, json2).show(truncate=False)
+---------------+------------------------------+------------------------------+
|date           |to_json(date)                 |to_json(date)                 |
+---------------+------------------------------+------------------------------+
|{2022-02-22, 1}|{"col1":"2022-02-22","col2":1}|{"col1":"2022/02/22","col2":1}|
+---------------+------------------------------+------------------------------+