pyspark.sql.functions.from_json ¶
-
pyspark.sql.functions.from_json( col : ColumnOrName , schema : Union [ pyspark.sql.types.ArrayType , pyspark.sql.types.StructType , pyspark.sql.column.Column , str ] , options : Optional [ Dict [ str , str ] ] = None ) → pyspark.sql.column.Column [source] ¶ -
将包含 JSON 字符串的列解析为一个
MapType,键的类型为StringType,值的类型为StructType或ArrayType,并使用指定的模式。对于无法解析的字符串,返回 null 。在版本 2.1.0 中新增。
在 3.4.0 版本中更改: 支持 Spark Connect。
- Parameters
- Returns
-
-
列 -
从给定的JSON对象创建一个复杂类型的新列。
-
示例
>>> from pyspark.sql.types import * >>> data = [(1, '''{"a": 1}''')] >>> schema = StructType([StructField("a", IntegerType())]) >>> df = spark.createDataFrame(data, ("key", "value")) >>> df.select(from_json(df.value, schema).alias("json")).collect() [Row(json=Row(a=1))] >>> df.select(from_json(df.value, "a INT").alias("json")).collect() [Row(json=Row(a=1))] >>> df.select(from_json(df.value, "MAP<STRING,INT>").alias("json")).collect() [Row(json={'a': 1})] >>> data = [(1, '''[{"a": 1}]''')] >>> schema = ArrayType(StructType([StructField("a", IntegerType())])) >>> df = spark.createDataFrame(data, ("key", "value")) >>> df.select(from_json(df.value, schema).alias("json")).collect() [Row(json=[Row(a=1)])] >>> schema = schema_of_json(lit('''{"a": 0}''')) >>> df.select(from_json(df.value, schema).alias("json")).collect() [Row(json=Row(a=None))] >>> data = [(1, '''[1, 2, 3]''')] >>> schema = ArrayType(IntegerType()) >>> df = spark.createDataFrame(data, ("key", "value")) >>> df.select(from_json(df.value, schema).alias("json")).collect() [Row(json=[1, 2, 3])]