Bagikan melalui


from_json

Mengurai kolom yang berisi string JSON ke dalam MapType dengan StringType sebagai jenis kunci, StructType atau ArrayType dengan skema yang ditentukan. Mengembalikan null, dalam kasus string yang tidak dapat dipisahkan.

Syntax

from pyspark.sql import functions as sf

sf.from_json(col, schema, options=None)

Parameter-parameternya

Pengaturan Tipe Description
col pyspark.sql.Column atau str Nama kolom atau kolom dalam format JSON.
schema DataType atau str String StructType, ArrayType dari StructType atau Python literal dengan string berformat DDL untuk digunakan saat mengurai kolom json.
options dict, opsional Opsi untuk mengontrol penguraian. Menerima opsi yang sama dengan sumber data json.

Pengembalian Barang

pyspark.sql.Column: kolom baru jenis kompleks dari objek JSON tertentu.

Examples

Contoh 1: Mengurai JSON dengan skema tertentu

import pyspark.sql.functions as sf
from pyspark.sql.types import StructType, StructField, IntegerType
schema = StructType([StructField("a", IntegerType())])
df = spark.createDataFrame([(1, '''{"a": 1}''')], ("key", "value"))
df.select(sf.from_json(df.value, schema).alias("json")).show()
+----+
|json|
+----+
| {1}|
+----+

Contoh 2: Mengurai JSON dengan string berformat DDL

import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, '''{"a": 1}''')], ("key", "value"))
df.select(sf.from_json(df.value, "a INT").alias("json")).show()
+----+
|json|
+----+
| {1}|
+----+

Contoh 3: Mengurai JSON ke dalam MapType

import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, '''{"a": 1}''')], ("key", "value"))
df.select(sf.from_json(df.value, "MAP<STRING,INT>").alias("json")).show()
+--------+
|    json|
+--------+
|{a -> 1}|
+--------+

Contoh 4: Mengurai JSON ke dalam ArrayType dari StructType

import pyspark.sql.functions as sf
from pyspark.sql.types import ArrayType, StructType, StructField, IntegerType
schema = ArrayType(StructType([StructField("a", IntegerType())]))
df = spark.createDataFrame([(1, '''[{"a": 1}]''')], ("key", "value"))
df.select(sf.from_json(df.value, schema).alias("json")).show()
+-----+
| json|
+-----+
|[{1}]|
+-----+

Contoh 5: Mengurai JSON ke dalam ArrayType

import pyspark.sql.functions as sf
from pyspark.sql.types import ArrayType, IntegerType
schema = ArrayType(IntegerType())
df = spark.createDataFrame([(1, '''[1, 2, 3]''')], ("key", "value"))
df.select(sf.from_json(df.value, schema).alias("json")).show()
+---------+
|     json|
+---------+
|[1, 2, 3]|
+---------+

Contoh 6: Mengurai JSON dengan opsi yang ditentukan

import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, '''{a:123}'''), (2, '''{"a":456}''')], ("key", "value"))
parsed1 = sf.from_json(df.value, "a INT")
parsed2 = sf.from_json(df.value, "a INT", {"allowUnquotedFieldNames": "true"})
df.select("value", parsed1, parsed2).show()
+---------+----------------+----------------+
|    value|from_json(value)|from_json(value)|
+---------+----------------+----------------+
|  {a:123}|          {NULL}|           {123}|
|{"a":456}|           {456}|           {456}|
+---------+----------------+----------------+